﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
using System.Data.SqlClient;
using System.IO;
using System.Drawing.Printing;
using System.Collections;
using System.Drawing.Imaging;

namespace VerdePimienta2._0
{
    public partial class Venta : Form
    {
        string constring = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\VP\\verdepimientadb.mdf;Integrated Security=True;User Instance=True";
        public Venta()
        {
            InitializeComponent();
            this.Focus();
        }


        //Carga inicial panel
        private void Venta_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'verdepimientadbDataSet.ClientesVentas' table. You can move, or remove it, as needed.
            //this.clientesVentasTableAdapter.Fill(this.verdepimientadbDataSet.ClientesVentas);
            // TODO: This line of code loads data into the 'verdepimientadbDataSet.ClientesVenta' table. You can move, or remove it, as needed.
            //this.clientesVentaTableAdapter.Fill(this.verdepimientadbDataSet.ClientesVenta);
            //LLamada al procedimiento almacenado q te dael siguiente id de cliente

            SqlConnection c = new SqlConnection(constring);
            c.Open();
            SqlDataAdapter da = new SqlDataAdapter("Select Id, Nombre, Telefono, Movil from Clientes", c);
            DataSet ds = new DataSet("Clientes");
            da.FillSchema(ds, SchemaType.Source, "Clientes");
            da.Fill(ds, "Clientes");
            DataTable dt = ds.Tables["Clientes"];

            clientesVentaDataGridView.DataSource = ds.Tables["Clientes"].DefaultView;

            //System.Nullable<int> Resultado = 0;
            //verdepimientadbDataSetTableAdapters.QueriesTableAdapter adapter = new VerdePimienta2._0.verdepimientadbDataSetTableAdapters.QueriesTableAdapter();
            //int i = adapter.ProximoID(ref Resultado);

            // TODO: This line of code loads data into the 'verdepimientadbDataSet.LlenarCmbEmpleados' table. You can move, or remove it, as needed.
            //this.llenarCmbEmpleadosTableAdapter.Fill(this.verdepimientadbDataSet.LlenarCmbEmpleados);

            RellenarComboEmpleados r = new RellenarComboEmpleados();
            r.RellenarComboE(cmbEmpVenta);

            txtPrecUnidProd1.Text = "0";
            txtPrecUnidProd2.Text = "0";
            txtPrecUnidProd3.Text = "0";
            txtPrecUnidProd4.Text = "0";
            txtPrecUnidProd5.Text = "0";
            txtPrecUnidProd6.Text = "0";
            txtPrecUnidProd7.Text = "0";
            txtPrecUnidProd8.Text = "0";
            txtIVAFlor.Text = "0";
            txtIVAOtros.Text = "0";
            txtTotal.Text = "0";
            txtDescuento.Text = "0";
            txtPagado.Text = "0";
            txtSinPagar.Text = "0";
            txtNombreCliente.Text = "";
            txtTlfCliente.Text = "";
            txtPagadoVenta.Text = "0";
            txtVueltaVenta.Text = "0";

            cmbCategProd1.SelectedIndex = 0;
            cmbCategProd2.SelectedIndex = 0;
            cmbCategProd3.SelectedIndex = 0;
            cmbCategProd4.SelectedIndex = 0;
            cmbCategProd5.SelectedIndex = 0;
            cmbCategProd6.SelectedIndex = 0;
            cmbCategProd7.SelectedIndex = 0;
            cmbCategProd8.SelectedIndex = 0;

            cmbEmpVenta.SelectedIndex = 0;
            cmbTipoPago.SelectedIndex = 1;
            cmbTipoVenta.SelectedIndex = 0;            
        }

        //Inicialización variables globales panel        
        float totalFP = 0; //Total de flores y plantas
        float totalO = 0; //Total de otras familias
        float Total = 0; //Total        
        bool btnCalcularVentaPulsado = false;
        

        //Botón CALCULAR VENTA
        private void btnCalcVenta_Click(object sender, EventArgs e)
        {
            float totalFP = 0; //Total de flores y plantas
            float totalO = 0; //Total de otras familias
            float Total = 0; //Total  
            float SumarFP = 0; //Lo q se suma x el Iva de las flores y plantas
            float SumarO = 0; //Lo q se suma x el Iva de otros
            Validaciones vv = new Validaciones();
            if ((vv.EsNum(txtcantProd1.Text)) && (vv.EsNum(txtcantProd2.Text)) && (vv.EsNum(txtcantProd3.Text)) && (vv.EsNum(txtcantProd4.Text)) && (vv.EsNum(txtcantProd5.Text)) && (vv.EsNum(txtcantProd6.Text)) && (vv.EsNum(txtcantProd7.Text)) && (vv.EsNum(txtcantProd8.Text)))
            {
                if ((vv.EsNum(txtPrecUnidProd1.Text)) && (vv.EsNum(txtPrecUnidProd2.Text)) && (vv.EsNum(txtPrecUnidProd3.Text)) && (vv.EsNum(txtPrecUnidProd4.Text)) && (vv.EsNum(txtPrecUnidProd5.Text)) && (vv.EsNum(txtPrecUnidProd6.Text)) && (vv.EsNum(txtPrecUnidProd7.Text)) && (vv.EsNum(txtPrecUnidProd8.Text)))
                {
                    // producto1
                    bool fp1 = false;
                    if (txtProd1.Text != "")
                    {
                        if (cmbCategProd1.Text == "1 - Flor")
                            fp1 = true;
                        if (cmbCategProd1.Text == "2 - Planta")
                            fp1 = true;
                        if (fp1)
                            totalFP = totalFP + float.Parse(txtPrecUnidProd1.Text) * float.Parse(txtcantProd1.Text);
                        else
                            totalO = totalO + float.Parse(txtPrecUnidProd1.Text) * float.Parse(txtcantProd1.Text);
                    }

                    // producto2
                    bool fp2 = false;
                    if (txtProd2.Text != "")
                    {
                        if (cmbCategProd2.Text == "1 - Flor")
                            fp2 = true;
                        if (cmbCategProd2.Text == "2 - Planta")
                            fp2 = true;
                        if (fp2)
                            totalFP = totalFP + float.Parse(txtPrecUnidProd2.Text) * float.Parse(txtcantProd2.Text);
                        else
                            totalO = totalO + float.Parse(txtPrecUnidProd2.Text) * float.Parse(txtcantProd2.Text);
                    }

                    // producto3
                    bool fp3 = false;
                    if (txtProd3.Text != "")
                    {
                        if (cmbCategProd3.Text == "1 - Flor")
                            fp3 = true;
                        if (cmbCategProd3.Text == "2 - Planta")
                            fp3 = true;
                        if (fp3)
                            totalFP = totalFP + float.Parse(txtPrecUnidProd3.Text) * float.Parse(txtcantProd3.Text);
                        else
                            totalO = totalO + float.Parse(txtPrecUnidProd3.Text) * float.Parse(txtcantProd3.Text);
                    }

                    // producto4
                    bool fp4 = false;
                    if (txtProd4.Text != "")
                    {
                        if (cmbCategProd4.Text == "1 - Flor")
                            fp4 = true;
                        if (cmbCategProd4.Text == "2 - Planta")
                            fp4 = true;
                        if (fp4)
                            totalFP = totalFP + float.Parse(txtPrecUnidProd4.Text) * float.Parse(txtcantProd4.Text);
                        else
                            totalO = totalO + float.Parse(txtPrecUnidProd4.Text) * float.Parse(txtcantProd4.Text);
                    }

                    // producto5
                    bool fp5 = false;
                    if (txtProd5.Text != "")
                    {
                        if (cmbCategProd5.Text == "1 - Flor")
                            fp5 = true;
                        if (cmbCategProd5.Text == "2 - Planta")
                            fp5 = true;
                        if (fp5)
                            totalFP = totalFP + float.Parse(txtPrecUnidProd5.Text) * float.Parse(txtcantProd5.Text);
                        else
                            totalO = totalO + float.Parse(txtPrecUnidProd5.Text) * float.Parse(txtcantProd5.Text);
                    }

                    // producto6
                    bool fp6 = false;
                    if (txtProd6.Text != "")
                    {
                        if (cmbCategProd6.Text == "1 - Flor")
                            fp6 = true;
                        if (cmbCategProd6.Text == "2 - Planta")
                            fp6 = true;
                        if (fp6)
                            totalFP = totalFP + float.Parse(txtPrecUnidProd6.Text) * float.Parse(txtcantProd6.Text);
                        else
                            totalO = totalO + float.Parse(txtPrecUnidProd6.Text) * float.Parse(txtcantProd6.Text);
                    }

                    // producto7
                    bool fp7 = false;
                    if (txtProd7.Text != "")
                    {
                        if (cmbCategProd7.Text == "1 - Flor")
                            fp7 = true;
                        if (cmbCategProd7.Text == "2 - Planta")
                            fp7 = true;
                        if (fp7)
                            totalFP = totalFP + float.Parse(txtPrecUnidProd7.Text) * float.Parse(txtcantProd7.Text);
                        else
                            totalO = totalO + float.Parse(txtPrecUnidProd7.Text) * float.Parse(txtcantProd7.Text);
                    }


                    // producto8
                    bool fp8 = false;
                    if (txtProd8.Text != "")
                    {
                        if (cmbCategProd8.Text == "1 - Flor")
                            fp8 = true;
                        if (cmbCategProd8.Text == "2 - Planta")
                            fp8 = true;
                        if (fp8)
                            totalFP = totalFP + float.Parse(txtPrecUnidProd8.Text) * float.Parse(txtcantProd8.Text);
                        else
                            totalO = totalO + float.Parse(txtPrecUnidProd8.Text) * float.Parse(txtcantProd8.Text);
                    }

                    float IvaFp = 0.07f; //IVA que hay que añadir a flores y plantas
                    float IvaO = 0.16f; //IVA que hay que añadir al resto de familias

                    //Cálculo de TOTALES:
                    SumarFP = IvaFp * totalFP;
                    SumarO = IvaO * totalO;
                    //totalFP = totalFP+SumarFP;
                    //totalO = totalO+SumarO;
                    txtIVAFlor.Text = SumarFP.ToString();
                    txtIVAOtros.Text = SumarO.ToString();
                    Total = totalFP + totalO;
                    txtTotal.Text = Total.ToString();

                    if (Total == 0)
                    {
                        btnCalcularVentaPulsado = false;
                        totalFP = 0;
                        totalO = 0;
                        Total = 0;
                    }
                    else
                    {
                        btnCalcularVentaPulsado = true;
                    }
                }
                else
                {
                    MessageBox.Show("Error: Los precios de los productos deben ser de tipo numérico.", "Clacular venta", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                MessageBox.Show("Error: Las cantidades de los productos deben ser de tipo numérico.", "Calcular venta", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            //Declaraciones variables de cálculos
            //bool[] listaProductos;
            //listaProductos = new bool[8];           
            //for (int i = 1; i < 8; i++)
            //{         
       
            //    if ("txtProd" + i + ".Text" != "")
            //    {
            //        if ("cmbCategProd" + i + ".Text" == "1 - Flor")
            //            listaProductos[i] = true;
            //        if ("cmbCategProd" + i + ".Text" == "2 - Planta")
            //            listaProductos[i] = true;
            //        if (listaProductos[i])
            //            totalFloresPlantas = totalFloresPlantas + float.Parse("txtPrecUnidProd" + i + ".Text") * float.Parse("txtcantProd" + i + ".Text");
            //        else
            //        {
            //            string precio = "txtPrecUnidProd" + i + ".Text";
            //            string cantidad = "txtcantProd" + i + ".Text";
            //            totalOtros = totalOtros + float.Parse(precio) * float.Parse(cantidad);
            //        }                 
            //    }
            //}            
        }

        //Botón BUSCAR CLIENTE
        private void btnBuscarCliente_Click(object sender, EventArgs e)
        {
            clientesVentaDataGridView.Refresh();
            SqlConnection c = new SqlConnection(constring);
            c.Open();
            SqlDataAdapter daB = new SqlDataAdapter("Select * From Clientes where Nombre = @nombre", c);
            daB.SelectCommand.Parameters.AddWithValue("@nombre", txtNombreCliente.Text);
            DataSet dsB = new DataSet("Clientes");
            daB.FillSchema(dsB, SchemaType.Source, "Clientes");
            daB.Fill(dsB, "Clientes");
            DataTable tblB;
            tblB = dsB.Tables["Clientes"];

            clientesVentaDataGridView.DataSource = dsB.Tables["Clientes"].DefaultView;
        }

        //Seleccionar CLIENTE de la lista
        private void clientesVentaDataGridView_SelectionChanged_1(object sender, EventArgs e)
        {
            DataGridViewRow row = clientesVentaDataGridView.CurrentRow;
            if (row != null)
            {
                lblId.Text = row.Cells[3].Value.ToString();
                txtNombreCliente.Text = row.Cells[0].Value.ToString();
                txtTlfCliente.Text = row.Cells[1].Value.ToString();
                txtboxMovilCliente.Text = row.Cells[2].Value.ToString();

            }
        }

        //Botón VENTA TICKET
        private void btnVentaTicket_Click(object sender, EventArgs e)
        {
            Ticket ticket = new Ticket();

            //Comprobar que se ha calculado la venta
            if (btnCalcularVentaPulsado)
            {
                //Comprobar que los campos obligatorios están llenos
                Validaciones ValVenta = new Validaciones();
                if ((string.IsNullOrEmpty(txtTotal.Text)) || (string.IsNullOrEmpty(cmbTipoPago.Text)) || (string.IsNullOrEmpty(cmbTipoVenta.Text)))
                {
                    MessageBox.Show("Los campos Total, Tipo de pago y Tipo de venta son obligatorios", "Venta Ticket", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    if ((string.IsNullOrEmpty(txtIVAFlor.Text)) && (string.IsNullOrEmpty(txtIVAOtros.Text)))
                    {
                        MessageBox.Show("Error en la venta, debe volver a realizar el cálculo", "Venta Ticket", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                    {
                        try
                        {
                            //Mostrar VUELTAS AL DEPENDIENTE    
                            if (txtPagadoVenta.Text != "0")
                            {
                                float totalVenta = 0;
                                float pagado = 0;
                                float vuelta = 0;
                                pagado = float.Parse(txtPagadoVenta.Text);
                                if (txtDescuento.Text == "")
                                {
                                    totalVenta = float.Parse(txtTotal.Text);
                                }
                                else
                                {
                                    totalVenta = float.Parse(txtDescuento.Text);
                                }
                                vuelta = pagado - totalVenta;
                                txtVueltaVenta.Text = vuelta.ToString();
                            }

                            //CONEXION VENTAS
                            SqlConnection conV = new SqlConnection(constring);
                            conV.Open();
                            SqlDataAdapter daVentaTickets = new SqlDataAdapter("Select * From Ventas", conV);
                            DataSet dsVentaTickets = new DataSet("Ventas");
                            daVentaTickets.FillSchema(dsVentaTickets, SchemaType.Source, "Ventas");
                            daVentaTickets.Fill(dsVentaTickets, "Ventas");
                            DataTable tblVentaTickets;
                            tblVentaTickets = dsVentaTickets.Tables["Ventas"];
                            DataRow drVentaTickets = tblVentaTickets.NewRow();

                            //Rellenar datos en la tabla VENTA
                            drVentaTickets["Fecha"] = dateVenta.Value.ToShortDateString();
                            drVentaTickets["TipoVenta"] = cmbTipoVenta.Text;
                            drVentaTickets["Empleado"] = cmbEmpVenta.Text;
                            drVentaTickets["TipoPago"] = cmbTipoPago.Text;

                            if (txtIVAFlor.Text.Length == 0)
                                drVentaTickets["TotalFlorPlanta"] = 0;
                            else
                                drVentaTickets["TotalFlorPlanta"] = txtIVAFlor.Text;

                            if (txtIVAOtros.Text.Length == 0)
                                drVentaTickets["TotalOtros"] = 0;
                            else
                                drVentaTickets["TotalOtros"] = txtIVAOtros.Text;

                            if (txtPagado.Text.Length == 0)
                                drVentaTickets["TotalEntregado"] = 0;
                            else
                                drVentaTickets["TotalEntregado"] = txtPagado.Text;

                            if (txtSinPagar.Text.Length == 0)
                                drVentaTickets["SinPagar"] = 0;
                            else
                                drVentaTickets["SinPagar"] = txtSinPagar.Text;

                            //Control para guardar total teniendo en cuenta el DESCUENTO aplicado por el empleado
                            if (txtDescuento.Text == "0")
                            {
                                drVentaTickets["Descuento"] = 0;
                                drVentaTickets["Total"] = txtTotal.Text;
                            }
                            else
                            {
                                drVentaTickets["Descuento"] = txtDescuento.Text;
                                drVentaTickets["Total"] = txtDescuento.Text;
                            }

                            //Asociar CLIENTE a la VENTA
                            if (txtNombreCliente.Text != "")
                            {
                                drVentaTickets["IdCliente"] = lblId.Text;
                                if (txtSinPagar.Text != "")
                                {
                                    string strSQL = "UPDATE Clientes SET" +
                                     " Deuda = '" + txtSinPagar.Text +
                                     "' WHERE Id = " + lblId.Text;

                                    SqlConnection conexionClientes = new SqlConnection(constring);
                                    conexionClientes.Open();
                                    SqlCommand cmSQL = new SqlCommand(strSQL, conexionClientes);
                                    cmSQL.ExecuteNonQuery();
                                    conexionClientes.Close();
                                }
                            }
                            else
                            {
                                drVentaTickets["IdCliente"] = 0;
                            }

                            tblVentaTickets.Rows.Add(drVentaTickets);
                            SqlCommandBuilder objCommandBuilder = new SqlCommandBuilder(daVentaTickets);
                            daVentaTickets.Update(dsVentaTickets, "Ventas");

                            //Guardar en la tabla PRODUCTOS datos de cada producto comprado                            
                            SqlConnection conProductos = new SqlConnection(constring);
                            conProductos.Open();
                            SqlDataAdapter daProductos = new SqlDataAdapter("Select * From Productos", conProductos);
                            DataSet dsProductos = new DataSet("Productos");
                            daProductos.FillSchema(dsProductos, SchemaType.Source, "Productos");
                            daProductos.Fill(dsProductos, "Productos");
                            DataTable tblProductos;
                            tblProductos = dsProductos.Tables["Productos"];

                            ////Guardar datos Producto1                            
                            if ((cmbCategProd1.Text != "") && (txtPrecUnidProd1.Text != "0"))
                            {
                                DataRow drProductos1 = tblProductos.NewRow();
                                drProductos1["IdVenta"] = drVentaTickets["Id"];
                                drProductos1["Tipo"] = cmbCategProd1.Text;
                                drProductos1["Nombre"] = txtProd1.Text;
                                drProductos1["NumUnidades"] = txtcantProd1.Text;
                                drProductos1["PrecioUnidad"] = txtPrecUnidProd1.Text;

                                tblProductos.Rows.Add(drProductos1);
                                SqlCommandBuilder objCommandBuilderP = new SqlCommandBuilder(daProductos);
                                daProductos.Update(dsProductos, "Productos");

                                //Añado el producto para imprimirlo en el ticket
                                ticket.AddItem(drProductos1["NumUnidades"].ToString(), drProductos1["Nombre"].ToString(), drProductos1["PrecioUnidad"].ToString());
                            }

                            //Guardar datos Producto2                            
                            if ((cmbCategProd2.Text != "") && (txtPrecUnidProd2.Text != "0"))
                            {
                                DataRow drProductos2 = tblProductos.NewRow();
                                drProductos2["IdVenta"] = drVentaTickets["Id"];
                                drProductos2["Tipo"] = cmbCategProd2.Text;
                                drProductos2["Nombre"] = txtProd2.Text;
                                drProductos2["NumUnidades"] = txtcantProd2.Text;
                                drProductos2["PrecioUnidad"] = txtPrecUnidProd2.Text;

                                tblProductos.Rows.Add(drProductos2);
                                SqlCommandBuilder objCommandBuilderP = new SqlCommandBuilder(daProductos);
                                daProductos.Update(dsProductos, "Productos");

                                //Añado el producto para imprimirlo en el ticket
                                ticket.AddItem(drProductos2["NumUnidades"].ToString(), drProductos2["Nombre"].ToString(), drProductos2["PrecioUnidad"].ToString());
                            }

                            //Guardar datos Producto3                            
                            if ((cmbCategProd3.Text != "") && (txtPrecUnidProd3.Text != "0"))
                            {
                                DataRow drProductos3 = tblProductos.NewRow();
                                drProductos3["IdVenta"] = drVentaTickets["Id"];
                                drProductos3["Tipo"] = cmbCategProd3.Text;
                                drProductos3["Nombre"] = txtProd3.Text;
                                drProductos3["NumUnidades"] = txtcantProd3.Text;
                                drProductos3["PrecioUnidad"] = txtPrecUnidProd3.Text;

                                tblProductos.Rows.Add(drProductos3);
                                SqlCommandBuilder objCommandBuilderP = new SqlCommandBuilder(daProductos);
                                daProductos.Update(dsProductos, "Productos");

                                //Añado el producto para imprimirlo en el ticket
                                ticket.AddItem(drProductos3["NumUnidades"].ToString(), drProductos3["Nombre"].ToString(), drProductos3["PrecioUnidad"].ToString());
                            }

                            //Guardar datos Producto4                            
                            if ((cmbCategProd4.Text != "") && (txtPrecUnidProd4.Text != "0"))
                            {
                                DataRow drProductos4 = tblProductos.NewRow();
                                drProductos4["IdVenta"] = drVentaTickets["Id"];
                                drProductos4["Tipo"] = cmbCategProd4.Text;
                                drProductos4["Nombre"] = txtProd4.Text;
                                drProductos4["NumUnidades"] = txtcantProd4.Text;
                                drProductos4["PrecioUnidad"] = txtPrecUnidProd4.Text;

                                tblProductos.Rows.Add(drProductos4);
                                SqlCommandBuilder objCommandBuilderP = new SqlCommandBuilder(daProductos);
                                daProductos.Update(dsProductos, "Productos");

                                //Añado el producto para imprimirlo en el ticket
                                ticket.AddItem(drProductos4["NumUnidades"].ToString(), drProductos4["Nombre"].ToString(), drProductos4["PrecioUnidad"].ToString());
                            }

                            //Guardar datos Producto5                            
                            if ((cmbCategProd5.Text != "") && (txtPrecUnidProd5.Text != "0"))
                            {
                                DataRow drProductos5 = tblProductos.NewRow();
                                drProductos5["IdVenta"] = drVentaTickets["Id"];
                                drProductos5["Tipo"] = cmbCategProd5.Text;
                                drProductos5["Nombre"] = txtProd5.Text;
                                drProductos5["NumUnidades"] = txtcantProd5.Text;
                                drProductos5["PrecioUnidad"] = txtPrecUnidProd5.Text;

                                tblProductos.Rows.Add(drProductos5);
                                SqlCommandBuilder objCommandBuilderP = new SqlCommandBuilder(daProductos);
                                daProductos.Update(dsProductos, "Productos");

                                //Añado el producto para imprimirlo en el ticket
                                ticket.AddItem(drProductos5["NumUnidades"].ToString(), drProductos5["Nombre"].ToString(), drProductos5["PrecioUnidad"].ToString());
                            }

                            //Guardar datos Producto6                            
                            if ((cmbCategProd6.Text != "") && (txtPrecUnidProd6.Text != "0"))
                            {
                                DataRow drProductos6 = tblProductos.NewRow();
                                drProductos6["IdVenta"] = drVentaTickets["Id"];
                                drProductos6["Tipo"] = cmbCategProd6.Text;
                                drProductos6["Nombre"] = txtProd6.Text;
                                drProductos6["NumUnidades"] = txtcantProd6.Text;
                                drProductos6["PrecioUnidad"] = txtPrecUnidProd6.Text;

                                tblProductos.Rows.Add(drProductos6);
                                SqlCommandBuilder objCommandBuilderP = new SqlCommandBuilder(daProductos);
                                daProductos.Update(dsProductos, "Productos");

                                //Añado el producto para imprimirlo en el ticket
                                ticket.AddItem(drProductos6["NumUnidades"].ToString(), drProductos6["Nombre"].ToString(), drProductos6["PrecioUnidad"].ToString());
                            }

                            //Guardar datos Producto7                            
                            if ((cmbCategProd7.Text != "") && (txtPrecUnidProd7.Text != "0"))
                            {
                                DataRow drProductos7 = tblProductos.NewRow();
                                drProductos7["IdVenta"] = drVentaTickets["Id"];
                                drProductos7["Tipo"] = cmbCategProd7.Text;
                                drProductos7["Nombre"] = txtProd7.Text;
                                drProductos7["NumUnidades"] = txtcantProd7.Text;
                                drProductos7["PrecioUnidad"] = txtPrecUnidProd7.Text;

                                tblProductos.Rows.Add(drProductos7);
                                SqlCommandBuilder objCommandBuilderP = new SqlCommandBuilder(daProductos);
                                daProductos.Update(dsProductos, "Productos");

                                //Añado el producto para imprimirlo en el ticket
                                ticket.AddItem(drProductos7["NumUnidades"].ToString(), drProductos7["Nombre"].ToString(), drProductos7["PrecioUnidad"].ToString());
                            }

                            //Guardar datos Producto8                            
                            if ((cmbCategProd8.Text != "") && (txtPrecUnidProd8.Text != "0"))
                            {
                                DataRow drProductos8 = tblProductos.NewRow();
                                drProductos8["IdVenta"] = drVentaTickets["Id"];
                                drProductos8["Tipo"] = cmbCategProd8.Text;
                                drProductos8["Nombre"] = txtProd8.Text;
                                drProductos8["NumUnidades"] = txtcantProd8.Text;
                                drProductos8["PrecioUnidado"] = txtPrecUnidProd8.Text;

                                tblProductos.Rows.Add(drProductos8);
                                SqlCommandBuilder objCommandBuilderP = new SqlCommandBuilder(daProductos);
                                daProductos.Update(dsProductos, "Productos");

                                //Añado el producto para imprimirlo en el ticket
                                ticket.AddItem(drProductos8["NumUnidades"].ToString(), drProductos8["Nombre"].ToString(), drProductos8["PrecioUnidad"].ToString());
                            }

                            MessageBox.Show("La venta se ha realizado con éxito.");

                            // IMPRIMIR TICKET  *******************************************************************************************
                            ticket.HeaderImage = System.Drawing.Image.FromFile("C:\\Documents and Settings\\Chema\\Mis documentos\\Visual Studio 2008\\Projects\\VerdePimienta2.0\\VerdePimienta2.0\\Imagenes\\LOGO6cms.jpg");

                            ticket.AddHeaderLine("VerdePimienta ®");
                            ticket.AddHeaderLine("Granada Development Businnes, S.L.");
                            ticket.AddHeaderLine("C.I.F. B-82045311");
                            ticket.AddHeaderLine("C/ Castilla la Mancha - Principado de Asturias. Las Rozas de Madrid");
                            ticket.AddHeaderLine("Tlf: 916371515");
                            ticket.AddHeaderLine(" ");
                            ticket.AddHeaderLine("     www.verdepimienta.com");

                            //El metodo AddSubHeaderLine es lo mismo al de AddHeaderLine con la diferencia
                            //de que al final de cada linea agrega una linea punteada "=========="
                            ticket.AddSubHeaderLine("Ticket #" + drVentaTickets["Id"].ToString() + " ");
                            ticket.AddSubHeaderLine("Le atendió: " + drVentaTickets["Empleado"].ToString() + " ");
                            ticket.AddSubHeaderLine(DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString());

                            //El metodo AddItem requeire 3 parametros, el primero es cantidad, el segundo es el nombre
                            //del producto y el tercero es el precio... HECHO EN CADA PRODUCTO QUE SE GUARDA ARRIBA

                            //El metodo AddTotal requiere 2 parametros, la descripcion del total, y el precio
                            float subtotal = float.Parse(txtPrecUnidProd1.Text) * float.Parse(txtcantProd1.Text) + float.Parse(txtPrecUnidProd2.Text) * float.Parse(txtcantProd2.Text) + float.Parse(txtPrecUnidProd3.Text) * float.Parse(txtcantProd3.Text) + float.Parse(txtPrecUnidProd4.Text) * float.Parse(txtcantProd4.Text) + float.Parse(txtPrecUnidProd5.Text) * float.Parse(txtcantProd5.Text) + float.Parse(txtPrecUnidProd6.Text) * float.Parse(txtcantProd6.Text) + float.Parse(txtPrecUnidProd7.Text) * float.Parse(txtcantProd7.Text) + float.Parse(txtPrecUnidProd8.Text) * float.Parse(txtcantProd8.Text);
                            ticket.AddTotal("Subtotal: ", subtotal.ToString() + "€");
                            ticket.AddTotal("IVA 7%", " " + txtIVAFlor.Text + " €");
                            ticket.AddTotal("IVA 16%", " " + txtIVAOtros.Text + " €");
                            ticket.AddTotal("TOTAL", " " + drVentaTickets["Total"].ToString() + " €");
                            ticket.AddTotal("", ""); //Ponemos un total en blanco que sirve de espacio

                            //El metodo AddFooterLine funciona igual que la cabecera
                            ticket.AddFooterLine("GRACIAS POR SU VISITA");

                            //Y por ultimo llamamos al metodo PrintTicket para imprimir el ticket, este metodo necesita un
                            //parametro de tipo string que debe de ser el nombre de la impresora.
                            ticket.PrintTicket("Posiflex PP7000 Partial Cut v3L");

                            /* *************************************************************************************************************************** */

                            //Limpiar casillas y cerrar conexiones
                            resetForm();
                            conProductos.Close();
                            conV.Close();
                        }
                        catch (Exception excTicket)
                        {
                            MessageBox.Show("Error en acceso a base de datos.", excTicket.Message, MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                }
            }
            else
            {
                MessageBox.Show("Debe realizar el cálculo de la venta mediante el botón correspondiente antes de llevar a cabo la venta.", "Venta Ticket", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }

        //Botón VENTA FACTURA
        private void btnVentaFactura_Click(object sender, EventArgs e)
        {
            Factura factura = new Factura();

            //Comprobar que se ha calculado la venta
            if (btnCalcularVentaPulsado)
            {
                //Comprobar que los campos obligatorios están llenos
                Validaciones ValVenta = new Validaciones();
                if ((string.IsNullOrEmpty(txtTotal.Text)) || (string.IsNullOrEmpty(cmbTipoPago.Text)) || (string.IsNullOrEmpty(cmbTipoVenta.Text)))
                {
                    MessageBox.Show("Los campos Total, Tipo de pago y Tipo de venta son obligatorios", "Venta Ticket", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    if ((string.IsNullOrEmpty(txtIVAFlor.Text)) && (string.IsNullOrEmpty(txtIVAOtros.Text)))
                    {
                        MessageBox.Show("Error en la venta, debe volver a realizar el cálculo", "Venta Ticket", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                    {
                        try
                        {
                            //Mostrar VUELTAS AL DEPENDIENTE    
                            if (txtPagadoVenta.Text != "0")
                            {
                                float totalVenta = 0;
                                float pagado = 0;
                                float vuelta = 0;
                                pagado = float.Parse(txtPagadoVenta.Text);
                                if (txtDescuento.Text == "")
                                {
                                    totalVenta = float.Parse(txtTotal.Text);
                                }
                                else
                                {
                                    totalVenta = float.Parse(txtDescuento.Text);
                                }
                                vuelta = pagado - totalVenta;
                                txtVueltaVenta.Text = vuelta.ToString();
                            }


                            //CONEXION VENTAS
                            SqlConnection conV = new SqlConnection(constring);
                            conV.Open();
                            SqlDataAdapter daVentaTickets = new SqlDataAdapter("Select * From Ventas", conV);
                            DataSet dsVentaTickets = new DataSet("Ventas");
                            daVentaTickets.FillSchema(dsVentaTickets, SchemaType.Source, "Ventas");
                            daVentaTickets.Fill(dsVentaTickets, "Ventas");
                            DataTable tblVentaTickets;
                            tblVentaTickets = dsVentaTickets.Tables["Ventas"];
                            DataRow drVentaTickets = tblVentaTickets.NewRow();

                            //Rellenar datos en la tabla VENTA
                            drVentaTickets["Fecha"] = dateVenta.Value.ToShortDateString();
                            drVentaTickets["TipoVenta"] = cmbTipoVenta.Text;
                            drVentaTickets["Empleado"] = cmbEmpVenta.Text;
                            drVentaTickets["TipoPago"] = cmbTipoPago.Text;

                            if (txtIVAFlor.Text.Length == 0)
                                drVentaTickets["TotalFlorPlanta"] = 0;
                            else
                                drVentaTickets["TotalFlorPlanta"] = txtIVAFlor.Text;

                            if (txtIVAOtros.Text.Length == 0)
                                drVentaTickets["TotalOtros"] = 0;
                            else
                                drVentaTickets["TotalOtros"] = txtIVAOtros.Text;

                            if (txtPagado.Text.Length == 0)
                                drVentaTickets["TotalEntregado"] = 0;
                            else
                                drVentaTickets["TotalEntregado"] = txtPagado.Text;

                            if (txtSinPagar.Text.Length == 0)
                                drVentaTickets["SinPagar"] = 0;
                            else
                                drVentaTickets["SinPagar"] = txtSinPagar.Text;

                            //Control para guardar total teniendo en cuenta el DESCUENTO aplicado por el empleado
                            if (txtDescuento.Text == "0")
                            {
                                drVentaTickets["Descuento"] = 0;
                                drVentaTickets["Total"] = txtTotal.Text;
                            }
                            else
                            {
                                drVentaTickets["Descuento"] = txtDescuento.Text;
                                drVentaTickets["Total"] = txtDescuento.Text;
                            }

                            //Asociar CLIENTE a la VENTA
                            if (txtNombreCliente.Text != "")
                            {
                                drVentaTickets["IdCliente"] = lblId.Text;
                                if (txtSinPagar.Text != "")
                                {
                                    string strSQL = "UPDATE Clientes SET" +
                                     " Deuda = '" + txtSinPagar.Text +
                                     "' WHERE Id = " + lblId.Text;

                                    SqlConnection conexionClientes = new SqlConnection(constring);
                                    conexionClientes.Open();
                                    SqlCommand cmSQL = new SqlCommand(strSQL, conexionClientes);
                                    cmSQL.ExecuteNonQuery();
                                    conexionClientes.Close();
                                }
                            }
                            else
                            {
                                drVentaTickets["IdCliente"] = 0;
                            }

                            tblVentaTickets.Rows.Add(drVentaTickets);
                            SqlCommandBuilder objCommandBuilder = new SqlCommandBuilder(daVentaTickets);
                            daVentaTickets.Update(dsVentaTickets, "Ventas");

                            //Guardar en la tabla PRODUCTOS datos de cada producto comprado                            
                            SqlConnection conProductos = new SqlConnection(constring);
                            conProductos.Open();
                            SqlDataAdapter daProductos = new SqlDataAdapter("Select * From Productos", conProductos);
                            DataSet dsProductos = new DataSet("Productos");
                            daProductos.FillSchema(dsProductos, SchemaType.Source, "Productos");
                            daProductos.Fill(dsProductos, "Productos");
                            DataTable tblProductos;
                            tblProductos = dsProductos.Tables["Productos"];

                            ////Guardar datos Producto1                            
                            if ((cmbCategProd1.Text != "") && (txtPrecUnidProd1.Text != "0"))
                            {
                                DataRow drProductos1 = tblProductos.NewRow();
                                drProductos1["IdVenta"] = drVentaTickets["Id"];
                                drProductos1["Tipo"] = cmbCategProd1.Text;
                                drProductos1["Nombre"] = txtProd1.Text;
                                drProductos1["NumUnidades"] = txtcantProd1.Text;
                                drProductos1["PrecioUnidad"] = txtPrecUnidProd1.Text;

                                tblProductos.Rows.Add(drProductos1);
                                SqlCommandBuilder objCommandBuilderP = new SqlCommandBuilder(daProductos);
                                daProductos.Update(dsProductos, "Productos");

                                //Añado el producto para imprimirlo en el ticket
                                factura.AddItem(drProductos1["NumUnidades"].ToString(), drProductos1["Nombre"].ToString(), drProductos1["PrecioUnidad"].ToString());
                            }

                            //Guardar datos Producto2                            
                            if ((cmbCategProd2.Text != "") && (txtPrecUnidProd2.Text != "0"))
                            {
                                DataRow drProductos2 = tblProductos.NewRow();
                                drProductos2["IdVenta"] = drVentaTickets["Id"];
                                drProductos2["Tipo"] = cmbCategProd2.Text;
                                drProductos2["Nombre"] = txtProd2.Text;
                                drProductos2["NumUnidades"] = txtcantProd2.Text;
                                drProductos2["PrecioUnidad"] = txtPrecUnidProd2.Text;

                                tblProductos.Rows.Add(drProductos2);
                                SqlCommandBuilder objCommandBuilderP = new SqlCommandBuilder(daProductos);
                                daProductos.Update(dsProductos, "Productos");

                                //Añado el producto para imprimirlo en el ticket
                                factura.AddItem(drProductos2["NumUnidades"].ToString(), drProductos2["Nombre"].ToString(), drProductos2["PrecioUnidad"].ToString());
                            }

                            //Guardar datos Producto3                            
                            if ((cmbCategProd3.Text != "") && (txtPrecUnidProd3.Text != "0"))
                            {
                                DataRow drProductos3 = tblProductos.NewRow();
                                drProductos3["IdVenta"] = drVentaTickets["Id"];
                                drProductos3["Tipo"] = cmbCategProd3.Text;
                                drProductos3["Nombre"] = txtProd3.Text;
                                drProductos3["NumUnidades"] = txtcantProd3.Text;
                                drProductos3["PrecioUnidad"] = txtPrecUnidProd3.Text;

                                tblProductos.Rows.Add(drProductos3);
                                SqlCommandBuilder objCommandBuilderP = new SqlCommandBuilder(daProductos);
                                daProductos.Update(dsProductos, "Productos");

                                //Añado el producto para imprimirlo en el ticket
                                factura.AddItem(drProductos3["NumUnidades"].ToString(), drProductos3["Nombre"].ToString(), drProductos3["PrecioUnidad"].ToString());
                            }

                            //Guardar datos Producto4                            
                            if ((cmbCategProd4.Text != "") && (txtPrecUnidProd4.Text != "0"))
                            {
                                DataRow drProductos4 = tblProductos.NewRow();
                                drProductos4["IdVenta"] = drVentaTickets["Id"];
                                drProductos4["Tipo"] = cmbCategProd4.Text;
                                drProductos4["Nombre"] = txtProd4.Text;
                                drProductos4["NumUnidades"] = txtcantProd4.Text;
                                drProductos4["PrecioUnidad"] = txtPrecUnidProd4.Text;

                                tblProductos.Rows.Add(drProductos4);
                                SqlCommandBuilder objCommandBuilderP = new SqlCommandBuilder(daProductos);
                                daProductos.Update(dsProductos, "Productos");

                                //Añado el producto para imprimirlo en el ticket
                                factura.AddItem(drProductos4["NumUnidades"].ToString(), drProductos4["Nombre"].ToString(), drProductos4["PrecioUnidad"].ToString());
                            }

                            //Guardar datos Producto5                            
                            if ((cmbCategProd5.Text != "") && (txtPrecUnidProd5.Text != "0"))
                            {
                                DataRow drProductos5 = tblProductos.NewRow();
                                drProductos5["IdVenta"] = drVentaTickets["Id"];
                                drProductos5["Tipo"] = cmbCategProd5.Text;
                                drProductos5["Nombre"] = txtProd5.Text;
                                drProductos5["NumUnidades"] = txtcantProd5.Text;
                                drProductos5["PrecioUnidad"] = txtPrecUnidProd5.Text;

                                tblProductos.Rows.Add(drProductos5);
                                SqlCommandBuilder objCommandBuilderP = new SqlCommandBuilder(daProductos);
                                daProductos.Update(dsProductos, "Productos");

                                //Añado el producto para imprimirlo en el ticket
                                factura.AddItem(drProductos5["NumUnidades"].ToString(), drProductos5["Nombre"].ToString(), drProductos5["PrecioUnidad"].ToString());
                            }

                            //Guardar datos Producto6                            
                            if ((cmbCategProd6.Text != "") && (txtPrecUnidProd6.Text != "0"))
                            {
                                DataRow drProductos6 = tblProductos.NewRow();
                                drProductos6["IdVenta"] = drVentaTickets["Id"];
                                drProductos6["Tipo"] = cmbCategProd6.Text;
                                drProductos6["Nombre"] = txtProd6.Text;
                                drProductos6["NumUnidades"] = txtcantProd6.Text;
                                drProductos6["PrecioUnidad"] = txtPrecUnidProd6.Text;

                                tblProductos.Rows.Add(drProductos6);
                                SqlCommandBuilder objCommandBuilderP = new SqlCommandBuilder(daProductos);
                                daProductos.Update(dsProductos, "Productos");

                                //Añado el producto para imprimirlo en el ticket
                                factura.AddItem(drProductos6["NumUnidades"].ToString(), drProductos6["Nombre"].ToString(), drProductos6["PrecioUnidad"].ToString());
                            }

                            //Guardar datos Producto7                            
                            if ((cmbCategProd7.Text != "") && (txtPrecUnidProd7.Text != "0"))
                            {
                                DataRow drProductos7 = tblProductos.NewRow();
                                drProductos7["IdVenta"] = drVentaTickets["Id"];
                                drProductos7["Tipo"] = cmbCategProd7.Text;
                                drProductos7["Nombre"] = txtProd7.Text;
                                drProductos7["NumUnidades"] = txtcantProd7.Text;
                                drProductos7["PrecioUnidad"] = txtPrecUnidProd7.Text;

                                tblProductos.Rows.Add(drProductos7);
                                SqlCommandBuilder objCommandBuilderP = new SqlCommandBuilder(daProductos);
                                daProductos.Update(dsProductos, "Productos");

                                //Añado el producto para imprimirlo en el ticket
                                factura.AddItem(drProductos7["NumUnidadeso"].ToString(), drProductos7["Nombre"].ToString(), drProductos7["PrecioUnidad"].ToString());
                            }

                            //Guardar datos Producto8                            
                            if ((cmbCategProd8.Text != "") && (txtPrecUnidProd8.Text != "0"))
                            {
                                DataRow drProductos8 = tblProductos.NewRow();
                                drProductos8["IdVenta"] = drVentaTickets["Id"];
                                drProductos8["Tipo"] = cmbCategProd8.Text;
                                drProductos8["Nombre"] = txtProd8.Text;
                                drProductos8["NumUnidades"] = txtcantProd8.Text;
                                drProductos8["PrecioUnidado"] = txtPrecUnidProd8.Text;

                                tblProductos.Rows.Add(drProductos8);
                                SqlCommandBuilder objCommandBuilderP = new SqlCommandBuilder(daProductos);
                                daProductos.Update(dsProductos, "Productos");

                                //Añado el producto para imprimirlo en el ticket
                                factura.AddItem(drProductos8["NumUnidades"].ToString(), drProductos8["Nombre"].ToString(), drProductos8["PrecioUnidad"].ToString());
                            }

                            MessageBox.Show("La venta se ha realizado con éxito.");

                            // IMPRIMIR FACTURA  *******************************************************************************************
                            factura.HeaderImage = System.Drawing.Image.FromFile("C:\\Documents and Settings\\Chema\\Mis documentos\\Visual Studio 2008\\Projects\\VerdePimienta2.0\\VerdePimienta2.0\\Imagenes\\LOGO6cms.jpg"); //esta propiedad no es obligatoria
                            factura.AddHeaderLine("Factura nº" + drVentaTickets["Id"].ToString() + "                                    VerdePimienta ® por Granada Development Businnes");
                            //factura.AddHeaderLine("");
                            factura.AddHeaderLine(DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString() + "             S.L. C.I.F. B-82045311   C/ Castilla la Mancha - Principado de Asturias");
                            //factura.AddHeaderLine("");
                            factura.AddHeaderLine("                                      Las Rozas de Madrid    Tlf: 916371515    www.verdepimienta.com");

                            //El metodo AddItem requeire 3 parametros, el primero es cantidad, el segundo es el nombre
                            //del producto y el tercero es el precio... HECHO EN CADA PRODUCTO QUE SE GUARDA ARRIBA

                            //El metodo AddTotal requiere 2 parametros, la descripcion del total, y el precio
                            float subtotal = float.Parse(txtPrecUnidProd1.Text) * float.Parse(txtcantProd1.Text) + float.Parse(txtPrecUnidProd2.Text) * float.Parse(txtcantProd2.Text) + float.Parse(txtPrecUnidProd3.Text) * float.Parse(txtcantProd3.Text) + float.Parse(txtPrecUnidProd4.Text) * float.Parse(txtcantProd4.Text) + float.Parse(txtPrecUnidProd5.Text) * float.Parse(txtcantProd5.Text) + float.Parse(txtPrecUnidProd6.Text) * float.Parse(txtcantProd6.Text) + float.Parse(txtPrecUnidProd7.Text) * float.Parse(txtcantProd7.Text) + float.Parse(txtPrecUnidProd8.Text) * float.Parse(txtcantProd8.Text);
                            factura.AddTotal("Subtotal:", subtotal.ToString() + "€");
                            factura.AddTotal("IVA 7%", " " + txtIVAFlor.Text + " €");
                            factura.AddTotal("IVA 16%", " " + txtIVAOtros.Text + " €");
                            factura.AddTotal("", ""); //Ponemos un total en blanco que sirve de espacio
                            factura.AddTotal("TOTAL", " " + drVentaTickets["Total"].ToString() + " €");
                            factura.AddTotal("", ""); //Ponemos un total en blanco que sirve de espacio

                            //Y por ultimo llamamos al metodo PrintTicket para imprimir el ticket, este metodo necesita un
                            //parametro de tipo string que debe de ser el nombre de la impresora.
                            factura.PrintTicket("HP Deskjet F300 series");

                            /* *************************************************************************************************************************** */

                            //Limpiar casillas y cerrar conexiones
                            resetForm();
                            conProductos.Close();
                            conV.Close();
                        }
                        catch (Exception excTicket)
                        {
                            MessageBox.Show("Error en acceso a base de datos.", excTicket.Message, MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                }
            }
            else
            {
                MessageBox.Show("Debe realizar el cálculo de la venta mediante el botón correspondiente antes de llevar a cabo la venta.", "Venta Ticket", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }

        //Botón DEVOLUCIÓN VENTA
        private void btnDevolucionVenta_Click(object sender, EventArgs e)
        {
            Ticket ticket = new Ticket();
            float t = 0;
            if (txtProd1.Text != "")
            {
                if (txtPrecUnidProd1.Text != "0")
                {
                    t = t + ((float.Parse(txtcantProd1.Text)) * (float.Parse(txtPrecUnidProd1.Text)));
                    txtTotal.Text = t.ToString();
                    //Añado el producto para imprimirlo en el ticket
                    ticket.AddItem(txtcantProd1.Text, txtProd1.Text, txtPrecUnidProd1.Text);
                }
            }
            if (txtProd2.Text != "")
            {
                if (txtPrecUnidProd2.Text != "0")
                {
                    t = t + ((float.Parse(txtcantProd2.Text)) * (float.Parse(txtPrecUnidProd2.Text)));
                    txtTotal.Text = t.ToString();
                    //Añado el producto para imprimirlo en el ticket
                    ticket.AddItem(txtcantProd2.Text, txtProd2.Text, txtPrecUnidProd2.Text);
                }
            }
            if (txtProd3.Text != "")
            {
                if (txtPrecUnidProd3.Text != "0")
                {
                    t = t + ((float.Parse(txtcantProd3.Text)) * (float.Parse(txtPrecUnidProd3.Text)));
                    txtTotal.Text = t.ToString();
                    //Añado el producto para imprimirlo en el ticket
                    ticket.AddItem(txtcantProd3.Text, txtProd3.Text, txtPrecUnidProd3.Text);
                }
            }
            if (txtProd4.Text != "")
            {
                if (txtPrecUnidProd4.Text != "0")
                {
                    t = t + ((float.Parse(txtcantProd4.Text)) * (float.Parse(txtPrecUnidProd4.Text)));
                    txtTotal.Text = t.ToString();
                    //Añado el producto para imprimirlo en el ticket
                    ticket.AddItem(txtcantProd4.Text, txtProd4.Text, txtPrecUnidProd4.Text);
                }
            }
            if (txtProd5.Text != "")
            {
                if (txtPrecUnidProd5.Text != "0")
                {
                    t = t + ((float.Parse(txtcantProd5.Text)) * (float.Parse(txtPrecUnidProd5.Text)));
                    txtTotal.Text = t.ToString();
                    //Añado el producto para imprimirlo en el ticket
                    ticket.AddItem(txtcantProd5.Text, txtProd5.Text, txtPrecUnidProd5.Text);
                }
            }
            if (txtProd6.Text != "")
            {
                if (txtPrecUnidProd6.Text != "0")
                {
                    t = t + ((float.Parse(txtcantProd6.Text)) * (float.Parse(txtPrecUnidProd6.Text)));
                    txtTotal.Text = t.ToString();
                    //Añado el producto para imprimirlo en el ticket
                    ticket.AddItem(txtcantProd6.Text, txtProd6.Text, txtPrecUnidProd6.Text);
                }
            }
            if (txtProd7.Text != "")
            {
                if (txtPrecUnidProd7.Text != "0")
                {
                    t = t + ((float.Parse(txtcantProd7.Text)) * (float.Parse(txtPrecUnidProd7.Text)));
                    txtTotal.Text = t.ToString();
                    //Añado el producto para imprimirlo en el ticket
                    ticket.AddItem(txtcantProd7.Text, txtProd7.Text, txtPrecUnidProd7.Text);
                }
            }
            if (txtProd8.Text != "")
            {
                if (txtPrecUnidProd8.Text != "0")
                {
                    t = t + ((float.Parse(txtcantProd8.Text)) * (float.Parse(txtPrecUnidProd8.Text)));
                    txtTotal.Text = t.ToString();
                    //Añado el producto para imprimirlo en el ticket
                    ticket.AddItem(txtcantProd8.Text, txtProd8.Text, txtPrecUnidProd8.Text);
                }
            }

            if (t == 0)
            {
                MessageBox.Show("No ha rellenado los datos correspondientes a los productos de la devolución.", "Error Devolución.", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                try
                {
                    //CONEXION VENTAS
                    SqlConnection conV = new SqlConnection(constring);
                    conV.Open();
                    SqlDataAdapter daVentaTickets = new SqlDataAdapter("Select * From Ventas", conV);
                    DataSet dsVentaTickets = new DataSet("Ventas");
                    daVentaTickets.FillSchema(dsVentaTickets, SchemaType.Source, "Ventas");
                    daVentaTickets.Fill(dsVentaTickets, "Ventas");
                    DataTable tblVentaTickets;
                    tblVentaTickets = dsVentaTickets.Tables["Ventas"];
                    DataRow drVentaTickets = tblVentaTickets.NewRow();

                    //Rellenar datos en la tabla VENTA
                    drVentaTickets["Fecha"] = dateVenta.Value.ToShortDateString();
                    drVentaTickets["TipoVenta"] = "";
                    drVentaTickets["Empleado"] = cmbEmpVenta.Text;
                    drVentaTickets["TipoPago"] = "";
                    drVentaTickets["TotalFlorPlanta"] = 0;
                    drVentaTickets["TotalOtros"] = 0;
                    drVentaTickets["TotalEntregado"] = 0;
                    drVentaTickets["SinPagar"] = 0;
                    drVentaTickets["Descuento"] = 0;
                    drVentaTickets["IdCliente"] = 0;

                    //Poner el total en negativo
                    float negt = 2 * t;
                    t = t - negt;
                    drVentaTickets["Total"] = t.ToString();

                    tblVentaTickets.Rows.Add(drVentaTickets);
                    SqlCommandBuilder objCommandBuilder = new SqlCommandBuilder(daVentaTickets);
                    daVentaTickets.Update(dsVentaTickets, "Ventas");

                    MessageBox.Show("La devolución se ha realizado con éxito.");

                    // IMPRIMIR TICKET  *******************************************************************************************
                    ticket.HeaderImage = System.Drawing.Image.FromFile("C:\\Documents and Settings\\Chema\\Mis documentos\\Visual Studio 2008\\Projects\\VerdePimienta2.0\\VerdePimienta2.0\\Imagenes\\LOGO6cms.jpg");
                    ticket.AddHeaderLine("VerdePimienta ®");
                    ticket.AddHeaderLine("Granada Development Businnes, S.L.");
                    ticket.AddHeaderLine("C.I.F. B-82045311");
                    ticket.AddHeaderLine("C/ Castilla la Mancha - Principado de Asturias. Las Rozas de Madrid");
                    ticket.AddHeaderLine("Tlf: 916371515");
                    ticket.AddHeaderLine(" ");
                    ticket.AddHeaderLine("     www.verdepimienta.com");

                    //El metodo AddSubHeaderLine es lo mismo al de AddHeaderLine con la diferencia
                    //de que al final de cada linea agrega una linea punteada "=========="
                    ticket.AddSubHeaderLine("Ticket #" + drVentaTickets["Id"].ToString() + " ");
                    ticket.AddSubHeaderLine("Le atendió: " + drVentaTickets["Empleado"].ToString() + " ");
                    ticket.AddSubHeaderLine(DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString());

                    //El metodo AddItem requeire 3 parametros, el primero es cantidad, el segundo es el nombre
                    //del producto y el tercero es el precio... HECHO EN CADA PRODUCTO QUE SE GUARDA ARRIBA

                    //El metodo AddTotal requiere 2 parametros, la descripcion del total, y el precio                    
                    ticket.AddTotal("TOTAL DEVOLUCIÓN", " " + t.ToString() + " €");
                    ticket.AddTotal("", ""); //Ponemos un total en blanco que sirve de espacio

                    //El metodo AddFooterLine funciona igual que la cabecera
                    ticket.AddFooterLine("GRACIAS POR SU VISITA");

                    //Y por ultimo llamamos al metodo PrintTicket para imprimir el ticket, este metodo necesita un
                    //parametro de tipo string que debe de ser el nombre de la impresora.
                    ticket.PrintTicket("Posiflex PP7000 Partial Cut v3L");

                    /* *************************************************************************************************************************** */

                    //Limpiar casillas y cerrar conexiones
                    resetForm();
                    conV.Close();
                }
                catch (Exception excTicket)
                {
                    MessageBox.Show("Error en acceso a base de datos.", excTicket.Message, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

        }

        //Botón CANCELAR VENTA
        private void btnCancelarVenta_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        //Resetear formulario
        private void resetForm()
        {
            totalFP = 0;
            totalO = 0;
            Total = 0;
            btnCalcularVentaPulsado = false;
            cmbTipoVenta.SelectedIndex = 0;
            cmbEmpVenta.SelectedIndex = 0;
            cmbCategProd1.SelectedIndex = 0;
            cmbCategProd2.SelectedIndex = 0;
            cmbCategProd3.SelectedIndex = 0;
            cmbCategProd4.SelectedIndex = 0;
            cmbCategProd5.SelectedIndex = 0;
            cmbCategProd6.SelectedIndex = 0;
            cmbCategProd7.SelectedIndex = 0;
            cmbCategProd8.SelectedIndex = 0;
            txtProd1.Text = "generico";
            txtProd2.Text = "generico";
            txtProd3.Text = "generico";
            txtProd4.Text = "generico";
            txtProd5.Text = "generico";
            txtProd6.Text = "generico";
            txtProd7.Text = "generico";
            txtProd8.Text = "generico";
            txtcantProd1.Text = "1";
            txtcantProd2.Text = "1";
            txtcantProd3.Text = "1";
            txtcantProd4.Text = "1";
            txtcantProd5.Text = "1";
            txtcantProd6.Text = "1";
            txtcantProd7.Text = "1";
            txtcantProd8.Text = "1";
            txtPrecUnidProd1.Text = "0";
            txtPrecUnidProd2.Text = "0";
            txtPrecUnidProd3.Text = "0";
            txtPrecUnidProd4.Text = "0";
            txtPrecUnidProd5.Text = "0";
            txtPrecUnidProd6.Text = "0";
            txtPrecUnidProd7.Text = "0";
            txtPrecUnidProd8.Text = "0";
            txtIVAFlor.Text = "0";
            txtIVAOtros.Text = "0";
            txtTotal.Text = "0";
            txtDescuento.Text = "0";
            txtPagado.Text = "0";
            txtSinPagar.Text = "0";
            cmbTipoPago.SelectedIndex = 1;
            txtNombreCliente.Clear();
            txtTlfCliente.Clear();
            txtPagadoVenta.Text = "0";
            txtVueltaVenta.Text = "0";
        }
        
        //Para calcular venta directamente al pulsar ENTER al final de la fila de un producto
        private void txtPrecUnidProd1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                float totalFP = 0; //Total de flores y plantas
                float totalO = 0; //Total de otras familias
                float Total = 0; //Total  
                float SumarFP = 0; //Lo q se suma x el Iva de las flores y plantas
                float SumarO = 0; //Lo q se suma x el Iva de otros
                Validaciones vv = new Validaciones();
                if ((vv.EsNum(txtcantProd1.Text)) && (vv.EsNum(txtcantProd2.Text)) && (vv.EsNum(txtcantProd3.Text)) && (vv.EsNum(txtcantProd4.Text)) && (vv.EsNum(txtcantProd5.Text)) && (vv.EsNum(txtcantProd6.Text)) && (vv.EsNum(txtcantProd7.Text)) && (vv.EsNum(txtcantProd8.Text)))
                {
                    if ((vv.EsNum(txtPrecUnidProd1.Text)) && (vv.EsNum(txtPrecUnidProd2.Text)) && (vv.EsNum(txtPrecUnidProd3.Text)) && (vv.EsNum(txtPrecUnidProd4.Text)) && (vv.EsNum(txtPrecUnidProd5.Text)) && (vv.EsNum(txtPrecUnidProd6.Text)) && (vv.EsNum(txtPrecUnidProd7.Text)) && (vv.EsNum(txtPrecUnidProd8.Text)))
                    {
                        // producto1
                        bool fp1 = false;
                        if (txtProd1.Text != "")
                        {
                            if (cmbCategProd1.Text == "1 - Flor")
                                fp1 = true;
                            if (cmbCategProd1.Text == "2 - Planta")
                                fp1 = true;
                            if (fp1)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd1.Text) * float.Parse(txtcantProd1.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd1.Text) * float.Parse(txtcantProd1.Text);
                        }

                        // producto2
                        bool fp2 = false;
                        if (txtProd2.Text != "")
                        {
                            if (cmbCategProd2.Text == "1 - Flor")
                                fp2 = true;
                            if (cmbCategProd2.Text == "2 - Planta")
                                fp2 = true;
                            if (fp2)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd2.Text) * float.Parse(txtcantProd2.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd2.Text) * float.Parse(txtcantProd2.Text);
                        }

                        // producto3
                        bool fp3 = false;
                        if (txtProd3.Text != "")
                        {
                            if (cmbCategProd3.Text == "1 - Flor")
                                fp3 = true;
                            if (cmbCategProd3.Text == "2 - Planta")
                                fp3 = true;
                            if (fp3)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd3.Text) * float.Parse(txtcantProd3.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd3.Text) * float.Parse(txtcantProd3.Text);
                        }

                        // producto4
                        bool fp4 = false;
                        if (txtProd4.Text != "")
                        {
                            if (cmbCategProd4.Text == "1 - Flor")
                                fp4 = true;
                            if (cmbCategProd4.Text == "2 - Planta")
                                fp4 = true;
                            if (fp4)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd4.Text) * float.Parse(txtcantProd4.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd4.Text) * float.Parse(txtcantProd4.Text);
                        }

                        // producto5
                        bool fp5 = false;
                        if (txtProd5.Text != "")
                        {
                            if (cmbCategProd5.Text == "1 - Flor")
                                fp5 = true;
                            if (cmbCategProd5.Text == "2 - Planta")
                                fp5 = true;
                            if (fp5)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd5.Text) * float.Parse(txtcantProd5.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd5.Text) * float.Parse(txtcantProd5.Text);
                        }

                        // producto6
                        bool fp6 = false;
                        if (txtProd6.Text != "")
                        {
                            if (cmbCategProd6.Text == "1 - Flor")
                                fp6 = true;
                            if (cmbCategProd6.Text == "2 - Planta")
                                fp6 = true;
                            if (fp6)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd6.Text) * float.Parse(txtcantProd6.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd6.Text) * float.Parse(txtcantProd6.Text);
                        }

                        // producto7
                        bool fp7 = false;
                        if (txtProd7.Text != "")
                        {
                            if (cmbCategProd7.Text == "1 - Flor")
                                fp7 = true;
                            if (cmbCategProd7.Text == "2 - Planta")
                                fp7 = true;
                            if (fp7)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd7.Text) * float.Parse(txtcantProd7.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd7.Text) * float.Parse(txtcantProd7.Text);
                        }


                        // producto8
                        bool fp8 = false;
                        if (txtProd8.Text != "")
                        {
                            if (cmbCategProd8.Text == "1 - Flor")
                                fp8 = true;
                            if (cmbCategProd8.Text == "2 - Planta")
                                fp8 = true;
                            if (fp8)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd8.Text) * float.Parse(txtcantProd8.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd8.Text) * float.Parse(txtcantProd8.Text);
                        }

                        float IvaFp = 0.07f; //IVA que hay que añadir a flores y plantas
                        float IvaO = 0.16f; //IVA que hay que añadir al resto de familias

                        //Cálculo de TOTALES:
                        SumarFP = IvaFp * totalFP;
                        SumarO = IvaO * totalO;
                        totalFP = totalFP + SumarFP;
                        totalO = totalO + SumarO;
                        txtIVAFlor.Text = SumarFP.ToString();
                        txtIVAOtros.Text = SumarO.ToString();
                        Total = totalFP + totalO;
                        txtTotal.Text = Total.ToString();

                        if (Total == 0)
                        {
                            btnCalcularVentaPulsado = false;
                            totalFP = 0;
                            totalO = 0;
                            Total = 0;
                        }
                        else
                        {
                            btnCalcularVentaPulsado = true;
                        }
                    }
                    else
                    {
                        MessageBox.Show("Error: Los precios de los productos deben ser de tipo numérico.", "Clacular venta", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    MessageBox.Show("Error: Las cantidades de los productos deben ser de tipo numérico.", "Calcular venta", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                txtPagado.Focus();                

            }
        }

        private void txtPrecUnidProd2_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                float totalFP = 0; //Total de flores y plantas
                float totalO = 0; //Total de otras familias
                float Total = 0; //Total  
                float SumarFP = 0; //Lo q se suma x el Iva de las flores y plantas
                float SumarO = 0; //Lo q se suma x el Iva de otros
                Validaciones vv = new Validaciones();
                if ((vv.EsNum(txtcantProd1.Text)) && (vv.EsNum(txtcantProd2.Text)) && (vv.EsNum(txtcantProd3.Text)) && (vv.EsNum(txtcantProd4.Text)) && (vv.EsNum(txtcantProd5.Text)) && (vv.EsNum(txtcantProd6.Text)) && (vv.EsNum(txtcantProd7.Text)) && (vv.EsNum(txtcantProd8.Text)))
                {
                    if ((vv.EsNum(txtPrecUnidProd1.Text)) && (vv.EsNum(txtPrecUnidProd2.Text)) && (vv.EsNum(txtPrecUnidProd3.Text)) && (vv.EsNum(txtPrecUnidProd4.Text)) && (vv.EsNum(txtPrecUnidProd5.Text)) && (vv.EsNum(txtPrecUnidProd6.Text)) && (vv.EsNum(txtPrecUnidProd7.Text)) && (vv.EsNum(txtPrecUnidProd8.Text)))
                    {
                        // producto1
                        bool fp1 = false;
                        if (txtProd1.Text != "")
                        {
                            if (cmbCategProd1.Text == "1 - Flor")
                                fp1 = true;
                            if (cmbCategProd1.Text == "2 - Planta")
                                fp1 = true;
                            if (fp1)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd1.Text) * float.Parse(txtcantProd1.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd1.Text) * float.Parse(txtcantProd1.Text);
                        }

                        // producto2
                        bool fp2 = false;
                        if (txtProd2.Text != "")
                        {
                            if (cmbCategProd2.Text == "1 - Flor")
                                fp2 = true;
                            if (cmbCategProd2.Text == "2 - Planta")
                                fp2 = true;
                            if (fp2)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd2.Text) * float.Parse(txtcantProd2.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd2.Text) * float.Parse(txtcantProd2.Text);
                        }

                        // producto3
                        bool fp3 = false;
                        if (txtProd3.Text != "")
                        {
                            if (cmbCategProd3.Text == "1 - Flor")
                                fp3 = true;
                            if (cmbCategProd3.Text == "2 - Planta")
                                fp3 = true;
                            if (fp3)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd3.Text) * float.Parse(txtcantProd3.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd3.Text) * float.Parse(txtcantProd3.Text);
                        }

                        // producto4
                        bool fp4 = false;
                        if (txtProd4.Text != "")
                        {
                            if (cmbCategProd4.Text == "1 - Flor")
                                fp4 = true;
                            if (cmbCategProd4.Text == "2 - Planta")
                                fp4 = true;
                            if (fp4)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd4.Text) * float.Parse(txtcantProd4.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd4.Text) * float.Parse(txtcantProd4.Text);
                        }

                        // producto5
                        bool fp5 = false;
                        if (txtProd5.Text != "")
                        {
                            if (cmbCategProd5.Text == "1 - Flor")
                                fp5 = true;
                            if (cmbCategProd5.Text == "2 - Planta")
                                fp5 = true;
                            if (fp5)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd5.Text) * float.Parse(txtcantProd5.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd5.Text) * float.Parse(txtcantProd5.Text);
                        }

                        // producto6
                        bool fp6 = false;
                        if (txtProd6.Text != "")
                        {
                            if (cmbCategProd6.Text == "1 - Flor")
                                fp6 = true;
                            if (cmbCategProd6.Text == "2 - Planta")
                                fp6 = true;
                            if (fp6)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd6.Text) * float.Parse(txtcantProd6.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd6.Text) * float.Parse(txtcantProd6.Text);
                        }

                        // producto7
                        bool fp7 = false;
                        if (txtProd7.Text != "")
                        {
                            if (cmbCategProd7.Text == "1 - Flor")
                                fp7 = true;
                            if (cmbCategProd7.Text == "2 - Planta")
                                fp7 = true;
                            if (fp7)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd7.Text) * float.Parse(txtcantProd7.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd7.Text) * float.Parse(txtcantProd7.Text);
                        }


                        // producto8
                        bool fp8 = false;
                        if (txtProd8.Text != "")
                        {
                            if (cmbCategProd8.Text == "1 - Flor")
                                fp8 = true;
                            if (cmbCategProd8.Text == "2 - Planta")
                                fp8 = true;
                            if (fp8)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd8.Text) * float.Parse(txtcantProd8.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd8.Text) * float.Parse(txtcantProd8.Text);
                        }

                        float IvaFp = 0.07f; //IVA que hay que añadir a flores y plantas
                        float IvaO = 0.16f; //IVA que hay que añadir al resto de familias

                        //Cálculo de TOTALES:
                        SumarFP = IvaFp * totalFP;
                        SumarO = IvaO * totalO;
                        totalFP = totalFP + SumarFP;
                        totalO = totalO + SumarO;
                        txtIVAFlor.Text = SumarFP.ToString();
                        txtIVAOtros.Text = SumarO.ToString();
                        Total = totalFP + totalO;
                        txtTotal.Text = Total.ToString();

                        if (Total == 0)
                        {
                            btnCalcularVentaPulsado = false;
                            totalFP = 0;
                            totalO = 0;
                            Total = 0;
                        }
                        else
                        {
                            btnCalcularVentaPulsado = true;
                        }
                    }
                    else
                    {
                        MessageBox.Show("Error: Los precios de los productos deben ser de tipo numérico.", "Clacular venta", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    MessageBox.Show("Error: Las cantidades de los productos deben ser de tipo numérico.", "Calcular venta", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                txtPagado.Focus();

            }

        }

        private void txtPrecUnidProd3_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                float totalFP = 0; //Total de flores y plantas
                float totalO = 0; //Total de otras familias
                float Total = 0; //Total  
                float SumarFP = 0; //Lo q se suma x el Iva de las flores y plantas
                float SumarO = 0; //Lo q se suma x el Iva de otros
                Validaciones vv = new Validaciones();
                if ((vv.EsNum(txtcantProd1.Text)) && (vv.EsNum(txtcantProd2.Text)) && (vv.EsNum(txtcantProd3.Text)) && (vv.EsNum(txtcantProd4.Text)) && (vv.EsNum(txtcantProd5.Text)) && (vv.EsNum(txtcantProd6.Text)) && (vv.EsNum(txtcantProd7.Text)) && (vv.EsNum(txtcantProd8.Text)))
                {
                    if ((vv.EsNum(txtPrecUnidProd1.Text)) && (vv.EsNum(txtPrecUnidProd2.Text)) && (vv.EsNum(txtPrecUnidProd3.Text)) && (vv.EsNum(txtPrecUnidProd4.Text)) && (vv.EsNum(txtPrecUnidProd5.Text)) && (vv.EsNum(txtPrecUnidProd6.Text)) && (vv.EsNum(txtPrecUnidProd7.Text)) && (vv.EsNum(txtPrecUnidProd8.Text)))
                    {
                        // producto1
                        bool fp1 = false;
                        if (txtProd1.Text != "")
                        {
                            if (cmbCategProd1.Text == "1 - Flor")
                                fp1 = true;
                            if (cmbCategProd1.Text == "2 - Planta")
                                fp1 = true;
                            if (fp1)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd1.Text) * float.Parse(txtcantProd1.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd1.Text) * float.Parse(txtcantProd1.Text);
                        }

                        // producto2
                        bool fp2 = false;
                        if (txtProd2.Text != "")
                        {
                            if (cmbCategProd2.Text == "1 - Flor")
                                fp2 = true;
                            if (cmbCategProd2.Text == "2 - Planta")
                                fp2 = true;
                            if (fp2)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd2.Text) * float.Parse(txtcantProd2.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd2.Text) * float.Parse(txtcantProd2.Text);
                        }

                        // producto3
                        bool fp3 = false;
                        if (txtProd3.Text != "")
                        {
                            if (cmbCategProd3.Text == "1 - Flor")
                                fp3 = true;
                            if (cmbCategProd3.Text == "2 - Planta")
                                fp3 = true;
                            if (fp3)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd3.Text) * float.Parse(txtcantProd3.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd3.Text) * float.Parse(txtcantProd3.Text);
                        }

                        // producto4
                        bool fp4 = false;
                        if (txtProd4.Text != "")
                        {
                            if (cmbCategProd4.Text == "1 - Flor")
                                fp4 = true;
                            if (cmbCategProd4.Text == "2 - Planta")
                                fp4 = true;
                            if (fp4)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd4.Text) * float.Parse(txtcantProd4.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd4.Text) * float.Parse(txtcantProd4.Text);
                        }

                        // producto5
                        bool fp5 = false;
                        if (txtProd5.Text != "")
                        {
                            if (cmbCategProd5.Text == "1 - Flor")
                                fp5 = true;
                            if (cmbCategProd5.Text == "2 - Planta")
                                fp5 = true;
                            if (fp5)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd5.Text) * float.Parse(txtcantProd5.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd5.Text) * float.Parse(txtcantProd5.Text);
                        }

                        // producto6
                        bool fp6 = false;
                        if (txtProd6.Text != "")
                        {
                            if (cmbCategProd6.Text == "1 - Flor")
                                fp6 = true;
                            if (cmbCategProd6.Text == "2 - Planta")
                                fp6 = true;
                            if (fp6)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd6.Text) * float.Parse(txtcantProd6.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd6.Text) * float.Parse(txtcantProd6.Text);
                        }

                        // producto7
                        bool fp7 = false;
                        if (txtProd7.Text != "")
                        {
                            if (cmbCategProd7.Text == "1 - Flor")
                                fp7 = true;
                            if (cmbCategProd7.Text == "2 - Planta")
                                fp7 = true;
                            if (fp7)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd7.Text) * float.Parse(txtcantProd7.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd7.Text) * float.Parse(txtcantProd7.Text);
                        }


                        // producto8
                        bool fp8 = false;
                        if (txtProd8.Text != "")
                        {
                            if (cmbCategProd8.Text == "1 - Flor")
                                fp8 = true;
                            if (cmbCategProd8.Text == "2 - Planta")
                                fp8 = true;
                            if (fp8)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd8.Text) * float.Parse(txtcantProd8.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd8.Text) * float.Parse(txtcantProd8.Text);
                        }

                        float IvaFp = 0.07f; //IVA que hay que añadir a flores y plantas
                        float IvaO = 0.16f; //IVA que hay que añadir al resto de familias

                        //Cálculo de TOTALES:
                        SumarFP = IvaFp * totalFP;
                        SumarO = IvaO * totalO;
                        totalFP = totalFP + SumarFP;
                        totalO = totalO + SumarO;
                        txtIVAFlor.Text = SumarFP.ToString();
                        txtIVAOtros.Text = SumarO.ToString();
                        Total = totalFP + totalO;
                        txtTotal.Text = Total.ToString();

                        if (Total == 0)
                        {
                            btnCalcularVentaPulsado = false;
                            totalFP = 0;
                            totalO = 0;
                            Total = 0;
                        }
                        else
                        {
                            btnCalcularVentaPulsado = true;
                        }
                    }
                    else
                    {
                        MessageBox.Show("Error: Los precios de los productos deben ser de tipo numérico.", "Clacular venta", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    MessageBox.Show("Error: Las cantidades de los productos deben ser de tipo numérico.", "Calcular venta", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                txtPagado.Focus();
            }            
        }

        private void txtPrecUnidProd4_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                float totalFP = 0; //Total de flores y plantas
                float totalO = 0; //Total de otras familias
                float Total = 0; //Total  
                float SumarFP = 0; //Lo q se suma x el Iva de las flores y plantas
                float SumarO = 0; //Lo q se suma x el Iva de otros
                Validaciones vv = new Validaciones();
                if ((vv.EsNum(txtcantProd1.Text)) && (vv.EsNum(txtcantProd2.Text)) && (vv.EsNum(txtcantProd3.Text)) && (vv.EsNum(txtcantProd4.Text)) && (vv.EsNum(txtcantProd5.Text)) && (vv.EsNum(txtcantProd6.Text)) && (vv.EsNum(txtcantProd7.Text)) && (vv.EsNum(txtcantProd8.Text)))
                {
                    if ((vv.EsNum(txtPrecUnidProd1.Text)) && (vv.EsNum(txtPrecUnidProd2.Text)) && (vv.EsNum(txtPrecUnidProd3.Text)) && (vv.EsNum(txtPrecUnidProd4.Text)) && (vv.EsNum(txtPrecUnidProd5.Text)) && (vv.EsNum(txtPrecUnidProd6.Text)) && (vv.EsNum(txtPrecUnidProd7.Text)) && (vv.EsNum(txtPrecUnidProd8.Text)))
                    {
                        // producto1
                        bool fp1 = false;
                        if (txtProd1.Text != "")
                        {
                            if (cmbCategProd1.Text == "1 - Flor")
                                fp1 = true;
                            if (cmbCategProd1.Text == "2 - Planta")
                                fp1 = true;
                            if (fp1)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd1.Text) * float.Parse(txtcantProd1.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd1.Text) * float.Parse(txtcantProd1.Text);
                        }

                        // producto2
                        bool fp2 = false;
                        if (txtProd2.Text != "")
                        {
                            if (cmbCategProd2.Text == "1 - Flor")
                                fp2 = true;
                            if (cmbCategProd2.Text == "2 - Planta")
                                fp2 = true;
                            if (fp2)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd2.Text) * float.Parse(txtcantProd2.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd2.Text) * float.Parse(txtcantProd2.Text);
                        }

                        // producto3
                        bool fp3 = false;
                        if (txtProd3.Text != "")
                        {
                            if (cmbCategProd3.Text == "1 - Flor")
                                fp3 = true;
                            if (cmbCategProd3.Text == "2 - Planta")
                                fp3 = true;
                            if (fp3)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd3.Text) * float.Parse(txtcantProd3.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd3.Text) * float.Parse(txtcantProd3.Text);
                        }

                        // producto4
                        bool fp4 = false;
                        if (txtProd4.Text != "")
                        {
                            if (cmbCategProd4.Text == "1 - Flor")
                                fp4 = true;
                            if (cmbCategProd4.Text == "2 - Planta")
                                fp4 = true;
                            if (fp4)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd4.Text) * float.Parse(txtcantProd4.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd4.Text) * float.Parse(txtcantProd4.Text);
                        }

                        // producto5
                        bool fp5 = false;
                        if (txtProd5.Text != "")
                        {
                            if (cmbCategProd5.Text == "1 - Flor")
                                fp5 = true;
                            if (cmbCategProd5.Text == "2 - Planta")
                                fp5 = true;
                            if (fp5)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd5.Text) * float.Parse(txtcantProd5.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd5.Text) * float.Parse(txtcantProd5.Text);
                        }

                        // producto6
                        bool fp6 = false;
                        if (txtProd6.Text != "")
                        {
                            if (cmbCategProd6.Text == "1 - Flor")
                                fp6 = true;
                            if (cmbCategProd6.Text == "2 - Planta")
                                fp6 = true;
                            if (fp6)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd6.Text) * float.Parse(txtcantProd6.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd6.Text) * float.Parse(txtcantProd6.Text);
                        }

                        // producto7
                        bool fp7 = false;
                        if (txtProd7.Text != "")
                        {
                            if (cmbCategProd7.Text == "1 - Flor")
                                fp7 = true;
                            if (cmbCategProd7.Text == "2 - Planta")
                                fp7 = true;
                            if (fp7)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd7.Text) * float.Parse(txtcantProd7.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd7.Text) * float.Parse(txtcantProd7.Text);
                        }


                        // producto8
                        bool fp8 = false;
                        if (txtProd8.Text != "")
                        {
                            if (cmbCategProd8.Text == "1 - Flor")
                                fp8 = true;
                            if (cmbCategProd8.Text == "2 - Planta")
                                fp8 = true;
                            if (fp8)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd8.Text) * float.Parse(txtcantProd8.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd8.Text) * float.Parse(txtcantProd8.Text);
                        }

                        float IvaFp = 0.07f; //IVA que hay que añadir a flores y plantas
                        float IvaO = 0.16f; //IVA que hay que añadir al resto de familias

                        //Cálculo de TOTALES:
                        SumarFP = IvaFp * totalFP;
                        SumarO = IvaO * totalO;
                        totalFP = totalFP + SumarFP;
                        totalO = totalO + SumarO;
                        txtIVAFlor.Text = SumarFP.ToString();
                        txtIVAOtros.Text = SumarO.ToString();
                        Total = totalFP + totalO;
                        txtTotal.Text = Total.ToString();

                        if (Total == 0)
                        {
                            btnCalcularVentaPulsado = false;
                            totalFP = 0;
                            totalO = 0;
                            Total = 0;
                        }
                        else
                        {
                            btnCalcularVentaPulsado = true;
                        }
                    }
                    else
                    {
                        MessageBox.Show("Error: Los precios de los productos deben ser de tipo numérico.", "Clacular venta", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    MessageBox.Show("Error: Las cantidades de los productos deben ser de tipo numérico.", "Calcular venta", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                txtPagado.Focus();
            }
        }

        private void txtPrecUnidProd5_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                float totalFP = 0; //Total de flores y plantas
                float totalO = 0; //Total de otras familias
                float Total = 0; //Total  
                float SumarFP = 0; //Lo q se suma x el Iva de las flores y plantas
                float SumarO = 0; //Lo q se suma x el Iva de otros
                Validaciones vv = new Validaciones();
                if ((vv.EsNum(txtcantProd1.Text)) && (vv.EsNum(txtcantProd2.Text)) && (vv.EsNum(txtcantProd3.Text)) && (vv.EsNum(txtcantProd4.Text)) && (vv.EsNum(txtcantProd5.Text)) && (vv.EsNum(txtcantProd6.Text)) && (vv.EsNum(txtcantProd7.Text)) && (vv.EsNum(txtcantProd8.Text)))
                {
                    if ((vv.EsNum(txtPrecUnidProd1.Text)) && (vv.EsNum(txtPrecUnidProd2.Text)) && (vv.EsNum(txtPrecUnidProd3.Text)) && (vv.EsNum(txtPrecUnidProd4.Text)) && (vv.EsNum(txtPrecUnidProd5.Text)) && (vv.EsNum(txtPrecUnidProd6.Text)) && (vv.EsNum(txtPrecUnidProd7.Text)) && (vv.EsNum(txtPrecUnidProd8.Text)))
                    {
                        // producto1
                        bool fp1 = false;
                        if (txtProd1.Text != "")
                        {
                            if (cmbCategProd1.Text == "1 - Flor")
                                fp1 = true;
                            if (cmbCategProd1.Text == "2 - Planta")
                                fp1 = true;
                            if (fp1)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd1.Text) * float.Parse(txtcantProd1.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd1.Text) * float.Parse(txtcantProd1.Text);
                        }

                        // producto2
                        bool fp2 = false;
                        if (txtProd2.Text != "")
                        {
                            if (cmbCategProd2.Text == "1 - Flor")
                                fp2 = true;
                            if (cmbCategProd2.Text == "2 - Planta")
                                fp2 = true;
                            if (fp2)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd2.Text) * float.Parse(txtcantProd2.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd2.Text) * float.Parse(txtcantProd2.Text);
                        }

                        // producto3
                        bool fp3 = false;
                        if (txtProd3.Text != "")
                        {
                            if (cmbCategProd3.Text == "1 - Flor")
                                fp3 = true;
                            if (cmbCategProd3.Text == "2 - Planta")
                                fp3 = true;
                            if (fp3)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd3.Text) * float.Parse(txtcantProd3.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd3.Text) * float.Parse(txtcantProd3.Text);
                        }

                        // producto4
                        bool fp4 = false;
                        if (txtProd4.Text != "")
                        {
                            if (cmbCategProd4.Text == "1 - Flor")
                                fp4 = true;
                            if (cmbCategProd4.Text == "2 - Planta")
                                fp4 = true;
                            if (fp4)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd4.Text) * float.Parse(txtcantProd4.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd4.Text) * float.Parse(txtcantProd4.Text);
                        }

                        // producto5
                        bool fp5 = false;
                        if (txtProd5.Text != "")
                        {
                            if (cmbCategProd5.Text == "1 - Flor")
                                fp5 = true;
                            if (cmbCategProd5.Text == "2 - Planta")
                                fp5 = true;
                            if (fp5)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd5.Text) * float.Parse(txtcantProd5.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd5.Text) * float.Parse(txtcantProd5.Text);
                        }

                        // producto6
                        bool fp6 = false;
                        if (txtProd6.Text != "")
                        {
                            if (cmbCategProd6.Text == "1 - Flor")
                                fp6 = true;
                            if (cmbCategProd6.Text == "2 - Planta")
                                fp6 = true;
                            if (fp6)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd6.Text) * float.Parse(txtcantProd6.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd6.Text) * float.Parse(txtcantProd6.Text);
                        }

                        // producto7
                        bool fp7 = false;
                        if (txtProd7.Text != "")
                        {
                            if (cmbCategProd7.Text == "1 - Flor")
                                fp7 = true;
                            if (cmbCategProd7.Text == "2 - Planta")
                                fp7 = true;
                            if (fp7)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd7.Text) * float.Parse(txtcantProd7.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd7.Text) * float.Parse(txtcantProd7.Text);
                        }


                        // producto8
                        bool fp8 = false;
                        if (txtProd8.Text != "")
                        {
                            if (cmbCategProd8.Text == "1 - Flor")
                                fp8 = true;
                            if (cmbCategProd8.Text == "2 - Planta")
                                fp8 = true;
                            if (fp8)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd8.Text) * float.Parse(txtcantProd8.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd8.Text) * float.Parse(txtcantProd8.Text);
                        }

                        float IvaFp = 0.07f; //IVA que hay que añadir a flores y plantas
                        float IvaO = 0.16f; //IVA que hay que añadir al resto de familias

                        //Cálculo de TOTALES:
                        SumarFP = IvaFp * totalFP;
                        SumarO = IvaO * totalO;
                        totalFP = totalFP + SumarFP;
                        totalO = totalO + SumarO;
                        txtIVAFlor.Text = SumarFP.ToString();
                        txtIVAOtros.Text = SumarO.ToString();
                        Total = totalFP + totalO;
                        txtTotal.Text = Total.ToString();

                        if (Total == 0)
                        {
                            btnCalcularVentaPulsado = false;
                            totalFP = 0;
                            totalO = 0;
                            Total = 0;
                        }
                        else
                        {
                            btnCalcularVentaPulsado = true;
                        }
                    }
                    else
                    {
                        MessageBox.Show("Error: Los precios de los productos deben ser de tipo numérico.", "Clacular venta", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    MessageBox.Show("Error: Las cantidades de los productos deben ser de tipo numérico.", "Calcular venta", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                txtPagado.Focus();
            }
        }

        private void txtPrecUnidProd6_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                float totalFP = 0; //Total de flores y plantas
                float totalO = 0; //Total de otras familias
                float Total = 0; //Total  
                float SumarFP = 0; //Lo q se suma x el Iva de las flores y plantas
                float SumarO = 0; //Lo q se suma x el Iva de otros
                Validaciones vv = new Validaciones();
                if ((vv.EsNum(txtcantProd1.Text)) && (vv.EsNum(txtcantProd2.Text)) && (vv.EsNum(txtcantProd3.Text)) && (vv.EsNum(txtcantProd4.Text)) && (vv.EsNum(txtcantProd5.Text)) && (vv.EsNum(txtcantProd6.Text)) && (vv.EsNum(txtcantProd7.Text)) && (vv.EsNum(txtcantProd8.Text)))
                {
                    if ((vv.EsNum(txtPrecUnidProd1.Text)) && (vv.EsNum(txtPrecUnidProd2.Text)) && (vv.EsNum(txtPrecUnidProd3.Text)) && (vv.EsNum(txtPrecUnidProd4.Text)) && (vv.EsNum(txtPrecUnidProd5.Text)) && (vv.EsNum(txtPrecUnidProd6.Text)) && (vv.EsNum(txtPrecUnidProd7.Text)) && (vv.EsNum(txtPrecUnidProd8.Text)))
                    {
                        // producto1
                        bool fp1 = false;
                        if (txtProd1.Text != "")
                        {
                            if (cmbCategProd1.Text == "1 - Flor")
                                fp1 = true;
                            if (cmbCategProd1.Text == "2 - Planta")
                                fp1 = true;
                            if (fp1)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd1.Text) * float.Parse(txtcantProd1.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd1.Text) * float.Parse(txtcantProd1.Text);
                        }

                        // producto2
                        bool fp2 = false;
                        if (txtProd2.Text != "")
                        {
                            if (cmbCategProd2.Text == "1 - Flor")
                                fp2 = true;
                            if (cmbCategProd2.Text == "2 - Planta")
                                fp2 = true;
                            if (fp2)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd2.Text) * float.Parse(txtcantProd2.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd2.Text) * float.Parse(txtcantProd2.Text);
                        }

                        // producto3
                        bool fp3 = false;
                        if (txtProd3.Text != "")
                        {
                            if (cmbCategProd3.Text == "1 - Flor")
                                fp3 = true;
                            if (cmbCategProd3.Text == "2 - Planta")
                                fp3 = true;
                            if (fp3)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd3.Text) * float.Parse(txtcantProd3.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd3.Text) * float.Parse(txtcantProd3.Text);
                        }

                        // producto4
                        bool fp4 = false;
                        if (txtProd4.Text != "")
                        {
                            if (cmbCategProd4.Text == "1 - Flor")
                                fp4 = true;
                            if (cmbCategProd4.Text == "2 - Planta")
                                fp4 = true;
                            if (fp4)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd4.Text) * float.Parse(txtcantProd4.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd4.Text) * float.Parse(txtcantProd4.Text);
                        }

                        // producto5
                        bool fp5 = false;
                        if (txtProd5.Text != "")
                        {
                            if (cmbCategProd5.Text == "1 - Flor")
                                fp5 = true;
                            if (cmbCategProd5.Text == "2 - Planta")
                                fp5 = true;
                            if (fp5)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd5.Text) * float.Parse(txtcantProd5.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd5.Text) * float.Parse(txtcantProd5.Text);
                        }

                        // producto6
                        bool fp6 = false;
                        if (txtProd6.Text != "")
                        {
                            if (cmbCategProd6.Text == "1 - Flor")
                                fp6 = true;
                            if (cmbCategProd6.Text == "2 - Planta")
                                fp6 = true;
                            if (fp6)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd6.Text) * float.Parse(txtcantProd6.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd6.Text) * float.Parse(txtcantProd6.Text);
                        }

                        // producto7
                        bool fp7 = false;
                        if (txtProd7.Text != "")
                        {
                            if (cmbCategProd7.Text == "1 - Flor")
                                fp7 = true;
                            if (cmbCategProd7.Text == "2 - Planta")
                                fp7 = true;
                            if (fp7)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd7.Text) * float.Parse(txtcantProd7.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd7.Text) * float.Parse(txtcantProd7.Text);
                        }


                        // producto8
                        bool fp8 = false;
                        if (txtProd8.Text != "")
                        {
                            if (cmbCategProd8.Text == "1 - Flor")
                                fp8 = true;
                            if (cmbCategProd8.Text == "2 - Planta")
                                fp8 = true;
                            if (fp8)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd8.Text) * float.Parse(txtcantProd8.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd8.Text) * float.Parse(txtcantProd8.Text);
                        }

                        float IvaFp = 0.07f; //IVA que hay que añadir a flores y plantas
                        float IvaO = 0.16f; //IVA que hay que añadir al resto de familias

                        //Cálculo de TOTALES:
                        SumarFP = IvaFp * totalFP;
                        SumarO = IvaO * totalO;
                        totalFP = totalFP + SumarFP;
                        totalO = totalO + SumarO;
                        txtIVAFlor.Text = SumarFP.ToString();
                        txtIVAOtros.Text = SumarO.ToString();
                        Total = totalFP + totalO;
                        txtTotal.Text = Total.ToString();

                        if (Total == 0)
                        {
                            btnCalcularVentaPulsado = false;
                            totalFP = 0;
                            totalO = 0;
                            Total = 0;
                        }
                        else
                        {
                            btnCalcularVentaPulsado = true;
                        }
                    }
                    else
                    {
                        MessageBox.Show("Error: Los precios de los productos deben ser de tipo numérico.", "Clacular venta", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    MessageBox.Show("Error: Las cantidades de los productos deben ser de tipo numérico.", "Calcular venta", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                txtPagado.Focus();
            }
        }

        private void txtPrecUnidProd7_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                float totalFP = 0; //Total de flores y plantas
                float totalO = 0; //Total de otras familias
                float Total = 0; //Total  
                float SumarFP = 0; //Lo q se suma x el Iva de las flores y plantas
                float SumarO = 0; //Lo q se suma x el Iva de otros
                Validaciones vv = new Validaciones();
                if ((vv.EsNum(txtcantProd1.Text)) && (vv.EsNum(txtcantProd2.Text)) && (vv.EsNum(txtcantProd3.Text)) && (vv.EsNum(txtcantProd4.Text)) && (vv.EsNum(txtcantProd5.Text)) && (vv.EsNum(txtcantProd6.Text)) && (vv.EsNum(txtcantProd7.Text)) && (vv.EsNum(txtcantProd8.Text)))
                {
                    if ((vv.EsNum(txtPrecUnidProd1.Text)) && (vv.EsNum(txtPrecUnidProd2.Text)) && (vv.EsNum(txtPrecUnidProd3.Text)) && (vv.EsNum(txtPrecUnidProd4.Text)) && (vv.EsNum(txtPrecUnidProd5.Text)) && (vv.EsNum(txtPrecUnidProd6.Text)) && (vv.EsNum(txtPrecUnidProd7.Text)) && (vv.EsNum(txtPrecUnidProd8.Text)))
                    {
                        // producto1
                        bool fp1 = false;
                        if (txtProd1.Text != "")
                        {
                            if (cmbCategProd1.Text == "1 - Flor")
                                fp1 = true;
                            if (cmbCategProd1.Text == "2 - Planta")
                                fp1 = true;
                            if (fp1)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd1.Text) * float.Parse(txtcantProd1.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd1.Text) * float.Parse(txtcantProd1.Text);
                        }

                        // producto2
                        bool fp2 = false;
                        if (txtProd2.Text != "")
                        {
                            if (cmbCategProd2.Text == "1 - Flor")
                                fp2 = true;
                            if (cmbCategProd2.Text == "2 - Planta")
                                fp2 = true;
                            if (fp2)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd2.Text) * float.Parse(txtcantProd2.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd2.Text) * float.Parse(txtcantProd2.Text);
                        }

                        // producto3
                        bool fp3 = false;
                        if (txtProd3.Text != "")
                        {
                            if (cmbCategProd3.Text == "1 - Flor")
                                fp3 = true;
                            if (cmbCategProd3.Text == "2 - Planta")
                                fp3 = true;
                            if (fp3)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd3.Text) * float.Parse(txtcantProd3.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd3.Text) * float.Parse(txtcantProd3.Text);
                        }

                        // producto4
                        bool fp4 = false;
                        if (txtProd4.Text != "")
                        {
                            if (cmbCategProd4.Text == "1 - Flor")
                                fp4 = true;
                            if (cmbCategProd4.Text == "2 - Planta")
                                fp4 = true;
                            if (fp4)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd4.Text) * float.Parse(txtcantProd4.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd4.Text) * float.Parse(txtcantProd4.Text);
                        }

                        // producto5
                        bool fp5 = false;
                        if (txtProd5.Text != "")
                        {
                            if (cmbCategProd5.Text == "1 - Flor")
                                fp5 = true;
                            if (cmbCategProd5.Text == "2 - Planta")
                                fp5 = true;
                            if (fp5)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd5.Text) * float.Parse(txtcantProd5.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd5.Text) * float.Parse(txtcantProd5.Text);
                        }

                        // producto6
                        bool fp6 = false;
                        if (txtProd6.Text != "")
                        {
                            if (cmbCategProd6.Text == "1 - Flor")
                                fp6 = true;
                            if (cmbCategProd6.Text == "2 - Planta")
                                fp6 = true;
                            if (fp6)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd6.Text) * float.Parse(txtcantProd6.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd6.Text) * float.Parse(txtcantProd6.Text);
                        }

                        // producto7
                        bool fp7 = false;
                        if (txtProd7.Text != "")
                        {
                            if (cmbCategProd7.Text == "1 - Flor")
                                fp7 = true;
                            if (cmbCategProd7.Text == "2 - Planta")
                                fp7 = true;
                            if (fp7)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd7.Text) * float.Parse(txtcantProd7.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd7.Text) * float.Parse(txtcantProd7.Text);
                        }


                        // producto8
                        bool fp8 = false;
                        if (txtProd8.Text != "")
                        {
                            if (cmbCategProd8.Text == "1 - Flor")
                                fp8 = true;
                            if (cmbCategProd8.Text == "2 - Planta")
                                fp8 = true;
                            if (fp8)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd8.Text) * float.Parse(txtcantProd8.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd8.Text) * float.Parse(txtcantProd8.Text);
                        }

                        float IvaFp = 0.07f; //IVA que hay que añadir a flores y plantas
                        float IvaO = 0.16f; //IVA que hay que añadir al resto de familias

                        //Cálculo de TOTALES:
                        SumarFP = IvaFp * totalFP;
                        SumarO = IvaO * totalO;
                        totalFP = totalFP + SumarFP;
                        totalO = totalO + SumarO;
                        txtIVAFlor.Text = SumarFP.ToString();
                        txtIVAOtros.Text = SumarO.ToString();
                        Total = totalFP + totalO;
                        txtTotal.Text = Total.ToString();

                        if (Total == 0)
                        {
                            btnCalcularVentaPulsado = false;
                            totalFP = 0;
                            totalO = 0;
                            Total = 0;
                        }
                        else
                        {
                            btnCalcularVentaPulsado = true;
                        }
                    }
                    else
                    {
                        MessageBox.Show("Error: Los precios de los productos deben ser de tipo numérico.", "Clacular venta", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    MessageBox.Show("Error: Las cantidades de los productos deben ser de tipo numérico.", "Calcular venta", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                txtPagado.Focus();
            }
        }

        private void txtPrecUnidProd8_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                float totalFP = 0; //Total de flores y plantas
                float totalO = 0; //Total de otras familias
                float Total = 0; //Total  
                float SumarFP = 0; //Lo q se suma x el Iva de las flores y plantas
                float SumarO = 0; //Lo q se suma x el Iva de otros
                Validaciones vv = new Validaciones();
                if ((vv.EsNum(txtcantProd1.Text)) && (vv.EsNum(txtcantProd2.Text)) && (vv.EsNum(txtcantProd3.Text)) && (vv.EsNum(txtcantProd4.Text)) && (vv.EsNum(txtcantProd5.Text)) && (vv.EsNum(txtcantProd6.Text)) && (vv.EsNum(txtcantProd7.Text)) && (vv.EsNum(txtcantProd8.Text)))
                {
                    if ((vv.EsNum(txtPrecUnidProd1.Text)) && (vv.EsNum(txtPrecUnidProd2.Text)) && (vv.EsNum(txtPrecUnidProd3.Text)) && (vv.EsNum(txtPrecUnidProd4.Text)) && (vv.EsNum(txtPrecUnidProd5.Text)) && (vv.EsNum(txtPrecUnidProd6.Text)) && (vv.EsNum(txtPrecUnidProd7.Text)) && (vv.EsNum(txtPrecUnidProd8.Text)))
                    {
                        // producto1
                        bool fp1 = false;
                        if (txtProd1.Text != "")
                        {
                            if (cmbCategProd1.Text == "1 - Flor")
                                fp1 = true;
                            if (cmbCategProd1.Text == "2 - Planta")
                                fp1 = true;
                            if (fp1)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd1.Text) * float.Parse(txtcantProd1.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd1.Text) * float.Parse(txtcantProd1.Text);
                        }

                        // producto2
                        bool fp2 = false;
                        if (txtProd2.Text != "")
                        {
                            if (cmbCategProd2.Text == "1 - Flor")
                                fp2 = true;
                            if (cmbCategProd2.Text == "2 - Planta")
                                fp2 = true;
                            if (fp2)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd2.Text) * float.Parse(txtcantProd2.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd2.Text) * float.Parse(txtcantProd2.Text);
                        }

                        // producto3
                        bool fp3 = false;
                        if (txtProd3.Text != "")
                        {
                            if (cmbCategProd3.Text == "1 - Flor")
                                fp3 = true;
                            if (cmbCategProd3.Text == "2 - Planta")
                                fp3 = true;
                            if (fp3)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd3.Text) * float.Parse(txtcantProd3.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd3.Text) * float.Parse(txtcantProd3.Text);
                        }

                        // producto4
                        bool fp4 = false;
                        if (txtProd4.Text != "")
                        {
                            if (cmbCategProd4.Text == "1 - Flor")
                                fp4 = true;
                            if (cmbCategProd4.Text == "2 - Planta")
                                fp4 = true;
                            if (fp4)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd4.Text) * float.Parse(txtcantProd4.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd4.Text) * float.Parse(txtcantProd4.Text);
                        }

                        // producto5
                        bool fp5 = false;
                        if (txtProd5.Text != "")
                        {
                            if (cmbCategProd5.Text == "1 - Flor")
                                fp5 = true;
                            if (cmbCategProd5.Text == "2 - Planta")
                                fp5 = true;
                            if (fp5)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd5.Text) * float.Parse(txtcantProd5.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd5.Text) * float.Parse(txtcantProd5.Text);
                        }

                        // producto6
                        bool fp6 = false;
                        if (txtProd6.Text != "")
                        {
                            if (cmbCategProd6.Text == "1 - Flor")
                                fp6 = true;
                            if (cmbCategProd6.Text == "2 - Planta")
                                fp6 = true;
                            if (fp6)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd6.Text) * float.Parse(txtcantProd6.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd6.Text) * float.Parse(txtcantProd6.Text);
                        }

                        // producto7
                        bool fp7 = false;
                        if (txtProd7.Text != "")
                        {
                            if (cmbCategProd7.Text == "1 - Flor")
                                fp7 = true;
                            if (cmbCategProd7.Text == "2 - Planta")
                                fp7 = true;
                            if (fp7)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd7.Text) * float.Parse(txtcantProd7.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd7.Text) * float.Parse(txtcantProd7.Text);
                        }


                        // producto8
                        bool fp8 = false;
                        if (txtProd8.Text != "")
                        {
                            if (cmbCategProd8.Text == "1 - Flor")
                                fp8 = true;
                            if (cmbCategProd8.Text == "2 - Planta")
                                fp8 = true;
                            if (fp8)
                                totalFP = totalFP + float.Parse(txtPrecUnidProd8.Text) * float.Parse(txtcantProd8.Text);
                            else
                                totalO = totalO + float.Parse(txtPrecUnidProd8.Text) * float.Parse(txtcantProd8.Text);
                        }

                        float IvaFp = 0.07f; //IVA que hay que añadir a flores y plantas
                        float IvaO = 0.16f; //IVA que hay que añadir al resto de familias

                        //Cálculo de TOTALES:
                        SumarFP = IvaFp * totalFP;
                        SumarO = IvaO * totalO;
                        totalFP = totalFP + SumarFP;
                        totalO = totalO + SumarO;
                        txtIVAFlor.Text = SumarFP.ToString();
                        txtIVAOtros.Text = SumarO.ToString();
                        Total = totalFP + totalO;
                        txtTotal.Text = Total.ToString();

                        if (Total == 0)
                        {
                            btnCalcularVentaPulsado = false;
                            totalFP = 0;
                            totalO = 0;
                            Total = 0;
                        }
                        else
                        {
                            btnCalcularVentaPulsado = true;
                        }
                    }
                    else
                    {
                        MessageBox.Show("Error: Los precios de los productos deben ser de tipo numérico.", "Clacular venta", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    MessageBox.Show("Error: Las cantidades de los productos deben ser de tipo numérico.", "Calcular venta", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                txtPagado.Focus(); btnVentaTicket.Focus();
            }
        }

        

                        
    }
}